我的反应应用程序中有两个组件说alpha
& bravo
我所做的就是将参数从alpha
传递到bravo
,并在alpha
中进行一些操作后将结果反馈回bravo
。这是示例代码:
var alpha = React.createClass({
state = {
value : 'someValue'
}
render(){
return(){
<bravo value={this.state.value}/>
}
}
});
并且
var bravo = React.createClass({
state = {
value : this.props.value
}
render(){
return(){
<h1>{this.state.value}</h2>
}
}
});
它运行得非常好并且我得到了所需的结果但同时我收到了以下错误:
error 'value' is missing in props validation react/prop-types
我试着在这里探讨其余的问题,但都没有用。
答案 0 :(得分:1)
经过近一个小时的斗争,我终于找到了solution。在这种情况下,在bravo
类工作后添加以下行:
bravo.propTypes = {
value: React.PropTypes.string
};
所以在添加这些行之后,组件代码如下:
var bravo = React.createClass({
state = {
value : this.props.value
}
render(){
return(){
<h1>{this.state.value}</h2>
}
}
});
bravo.propTypes = {
value: React.PropTypes.string
};
export default bravo;
答案 1 :(得分:0)
根据docs:
使用React.createClass(),您需要将propTypes定义为属性 在传递的对象上,getDefaultProps()作为函数在其上
为 <option value = "234123"> John doe </option>
定义proptypes,你应该好好去。
另一个注意事项 - bravo
接受一个对象,因此createClass
,render
和其他键值对必须是使用冒号而不是等号的值。 state
和state
应为render
,其中每个都以逗号分隔。像:
key: {key: value}
答案 2 :(得分:0)
也许你可以试试像
这样的东西var Alpha = React.createClass({
state = { value: 'someValue' }
valueChanger: function() {
var newVal;
// change this.state.value and set it to newVal.
this.setState( {value: newVal} );
}
render: function() {
<Bravo value={this.valueChanger} />
}
});
这样您就可以将状态保留在顶级组件中。然后你做...
var Bravo = React.createClass({
render: function() {
<h1>{this.props.value}</h1>
}
});