Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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_Json_Forms_Reactjs - Fatal编程技术网

Javascript 将所有状态值传递给子组件

Javascript 将所有状态值传递给子组件,javascript,json,forms,reactjs,Javascript,Json,Forms,Reactjs,我有一个遗留应用程序,它通过一个JSON来创建一个多页表单。我正在尝试创建一个通用的多页表单组件,我们可以在其中通过json生成表单 应用程序使用buildFormState将父组件中的状态设置为: constructor(props) { super(props); this.state = this.buildFormState(); } buildFormState() { let state = SCREENS.reduce(function(o, s) { let

我有一个遗留应用程序,它通过一个
JSON
来创建一个多页表单。我正在尝试创建一个通用的多页表单组件,我们可以在其中通过json生成表单

应用程序使用
buildFormState
将父组件中的
状态设置为:

constructor(props) {
  super(props);
  this.state = this.buildFormState();
}

 buildFormState() {
let state = SCREENS.reduce(function(o, s) {
    let _s = s.fields.reduce(function(_o, _f) {
        _o[_f.name] = _f.type == 'checkbox'  ? [] : '';
        return _o;
    }, {});
    return Object.assign(o, _s);
}, {});
state.current_screen = 0;
return state;
}
这是我对我的
MultiPageForm
组件的调用:

<MultiStepForm SCREENS = {SCREENS} current_screen = {this.state.current_screen} state = {this.state} submitState={this.submitState.bind(this)} uploadPhoto={this.uploadPhoto.bind(this)} completeForm={this.completeForm.bind(this)} />

但它并没有正确地通过状态,因为有些东西通过了,而另一些东西没有。是否有一种方法可以正确地传递所有内容,而不必在子组件中单独分配它?

您可以像这样传递所有状态:

<MultiStepForm {...this.state} />

如果不希望拆分它,而是将其作为对象发送:

<MultiStepForm childState={this.state} />

使用
state
string作为道具名称应该不是问题,但是最好避免使用它

<MultiStepForm childState={this.state} />