reactjs - 除了其他 Prop 之外,还向子组件传递额外的类名

标签 reactjs

我想将其他类名传递给子组件,并传递任何其他 Prop 。

例如:

class Parent extends Component {
    render() {
        <Child
            className="parent-class"
            flavor="chocolate"
        />
    }
}

class Child extends Component {
    render() {
        <div className="child-class" {...props}>

        </div>
    }
}

在这种情况下,我希望子组件 div 具有“ flavor ” Prop ,并且还具有“父类”和“子类”两个类。然而事实上,className="child-class"将被 {...props} 覆盖。

我能想到的唯一解决方法是将 {...props} 放在 Child 组件中的 className 之前:
<div {...props} className={`child-class ${props.className}`}>

这是唯一的解决方法吗?还是有更清洁的解决方案?

最佳答案

我通常使用 classnames packagerest operator对于这样的事情。

import classNames from 'classnames';

class Parent extends Component {
    render() {
        <Child
            className="parent-class"
            flavor="chocolate"
        />
    }
}

class Child extends Component {
    render() {
        const { className, ...rest } = this.props;
        const childClassNames = classNames('child-class', className);

        return (
            <div className={childClassNames} {...rest}>
            </div>
        );
    }
}

您可以调用rest无论你喜欢什么,例如...props将创建一个名为 props 的对象变量其中将包含 this.props 中的所有内容除了 className .

此外,classnames 包使用非常广泛,可以让您做其他很酷的事情,例如有条件地包含类名。

关于reactjs - 除了其他 Prop 之外,还向子组件传递额外的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53731020/

相关文章:

css - 使用 React JS/Polymer 的主题 css 选择器

javascript - 使用 React 实现多个列表的拖放

javascript - 在 React 中找不到模块

javascript - 如果我需要在 React 组件之后设置 State,如何对服务器的失败响应使用react?

javascript - 使用 React,是否可以使用 propType 来指定 DOM 元素类型?

android - react native -Redux : Multiple instances of same state in app

javascript - 如何在 React 应用程序中保留数据以最小化服务器调用

javascript - 如何正确加载图片路径?

reactjs - React使用HTML5视频标签controlsList属性

javascript - 从 React 的事件处理程序中删除动态 DOM 节点的正确方法是什么?