Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将方法作为道具传递给孩子_Javascript_Reactjs_React Jsx - Fatal编程技术网

Javascript 将方法作为道具传递给孩子

Javascript 将方法作为道具传递给孩子,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,有没有办法将当前类的方法作为道具传递给子类 例如, var SignupModal = React.createClass({ mixins: [CheckMixin], getInitialState: function(){ return { 'wizardstate': 0 } }, setWizardState: function(state){ var that = this; switch (state){ case 0:

有没有办法将当前类的方法作为道具传递给子类

例如,

var SignupModal = React.createClass({
mixins: [CheckMixin],
getInitialState: function(){
  return {
      'wizardstate': 0
  }
},
setWizardState: function(state){
    var that = this;
    switch (state){
        case 0:
           that.setState({'wizardstate': 0});
           break;
        case 1:
            that.setState({'wizardstate': 1});
            break;
        case 2:
            that.setState({'wizardstate': 2});
            break;
        case 3:
            that.setState({'wizardstate': 3});
            break;
        case 4:
            that.setState({'wizardstate': 4});
            break;
    }
},
render: function(){
    var temp;
    switch (this.state.wizardstate){
        case 0:
           temp = (<SignupSetup setWizardState={this.setWizardState}/>);
            break;
        case 1:
            temp = (<EmailSetup />);
            break;
        case 2:
            temp = (<PasswordSetup />);
            break;
        case 3:
            temp =  (<UsernameSetup />);
            break;
        case 4:
            temp = (<CategoriesSetup />);
            break;
    }
    return (<Modal {...this.props} title="Login" animation={false}>
            <div className="modal-body">
                <div>
                {temp}
                </div>
            </div>
        </Modal>)


var SignupSetup = React.createClass({
    render: function(){
        return (<Button onClick={this.props.setWizardState(1)}></Button>)
    }
});
var SignupModal=React.createClass({
mixin:[CheckMixin],
getInitialState:函数(){
返回{
“向导状态”:0
}
},
setWizardState:函数(状态){
var=这个;
开关(状态){
案例0:
setState({'wizardstate':0});
打破
案例1:
setState({'wizardstate':1});
打破
案例2:
setState({'wizardstate':2});
打破
案例3:
setState({'wizardstate':3});
打破
案例4:
setState({'wizardstate':4});
打破
}
},
render:function(){
无功温度;
开关(this.state.wizardstate){
案例0:
温度=();
打破
案例1:
温度=();
打破
案例2:
温度=();
打破
案例3:
温度=();
打破
案例4:
温度=();
打破
}
返回(
{temp}
)
var SignupSetup=React.createClass({
render:function(){
返回()
}
});
我想将这个SignupModal的setWizardState方法作为prop传递给子SignupSetup,但是我得到了错误

未捕获错误:不变冲突:replaceState(…):无法在现有状态转换期间更新(例如在
渲染
)。渲染方法应该是道具和状态的纯函数。react.js:17122
问题如下:

<Button onclick={this.props.setWizardState(1)}></Button>

如果您有类似的编译器,也可以使用es6箭头符号

this.props.setWizardState(1)}>

这是reactjs官方网站。显然,您需要绑定此函数,而不是直接应用

onClick={this.setWizardState.bind(this, 1)}

Antony,他们想把数字作为函数的第一个参数,但不想在render中调用函数。人们理解这个问题有很多原因,所以你能解释一下你的困惑吗?@FakeRainBrigand请给我详细解释一下这个问题,在我申请成为你上面提到过。一切都很好。非常感谢。@SusylGhimire我不知道还能说些什么那么你怎么知道应该传递null参数并绑定这个方法,最终解决了问题?
onClick={this.setWizardState.bind(this, 1)}