'参数值'在道具验证react / prop-types错误中缺少

时间:2017-02-02 21:08:04

标签: javascript reactjs ecmascript-6 components eslint

我的反应应用程序中有两个组件说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

我试着在这里探讨其余的问题,但都没有用。

3 个答案:

答案 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接受一个对象,因此createClassrender和其他键值对必须是使用冒号而不是等号的值。 statestate应为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>
  }
});