开发者问题收集

如何在 React.js 中将 props 从一个类传递到另一个类

2016-11-17
86247

我对 React 还很陌生。我正在通过创建一个非常简单的九宫格框进行练习,用户可以使用下拉菜单选择他们现在想要使用的颜色。唯一的问题是,我不太清楚如何将变量从包含它的类(ColorPicker)传递到包含网格(Box)的类。有人能给我一些关于如何做到这一点的指点吗?

我仍然习惯将 props 传递给其他类。

这是 CodePen 的链接: http://codepen.io/anfperez/pen/RorKge

这是我的代码

//this displays the color selections for the boxes: red, green, and blue
var ColorPicker = React.createClass({

handleChange: function(e) {
    var newColor = e.target.value;
    this.props.onChange(color);

},

render: function() {
    
return (
    <div>
        <select id="pick-colors" onChange={this.handleChange}>
            <option value="red">
                Red 
            </option>

            <option value="green">
                Green 
            </option>

            <option value="blue">
                Blue 
            </option>

        </select>

    </div>
    )
}
});

//contains the boxes that will eventually change color
var Box = React.createClass({
getInitialState: function() {
    return {
      //boxes are initially white
        color: 'white'
    };
},

    changeColor: function(newColor) {
        var newColor = this.state.color;
        this.setState({
            color: newColor
        });

    },

render: function() {
    return (
    <div >
    <div className='box' style={{background:this.state.color}} onClick={this.changeColor}> 
    </div>
    </div>
    );
}
});
3个回答

React 中的 props 从父类传递到子类。例如,如果您有一个渲染子类的父类,则父类现在可以将 props 传递给子类。以下是示例。

class Parent extends React.Component {
    render() {
        return (
            <Child example="foo" />
        )
    }
}

class Child extends React.component {
    render() {
        return (
            <h1>{this.props.example}</h1>
        )
    }
}

父类渲染子类。父类将一个名为 example 的 prop 传递给子类。在子类中,您可以通过调用 this.props.example 来访问 example 的值

Chaim Friedman
2016-11-17

您无需渲染 DOM 10 次,而应渲染一个包装其他组件的主组件。您可以在其他组件内重用组件并向下传递 props。

Rico Rojas
2016-11-17

您必须使用另一个包含这两个组件并将所选颜色作为其状态进行管理的组件。当 ColorPicker 获取新值时,容器的状态会更新,并且 Box 会从容器状态中获取其颜色值。

ColorPicker 应从 props 中获取要在颜色值更改时执行的回调。

var ColorPicker = React.createClass({

render: function() {

return (
    <div>
        <select id="pick-colors" onChange={this.props.onChange}>
            <option value="red">
                Red 
            </option>

            <option value="green">
                Green 
            </option>

            <option value="blue">
                Blue 
            </option>

        </select>

    </div>
    )
}
});

var App = React.createClass({
    getInitialState: function() {
        return {
             selectedColor: '#FFFFFF'
        }    
    },
    onColorPicked: function(e) {
        this.setState({selectedColor: e.target.value })
    },
    render: function() {
        return (
            <div>
              <ColorPicker onChange={this.props.onColorPicked} />
              <Box color={this.state.selectedColor} />
            </div>
        )
    }

>

唯一有状态的组件应该是 App 。它通过 props 将其状态传递给其他组件。

gesuwall
2016-11-17