Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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 反应类型错误:this.state.descriptions.map不是函数_Javascript_Reactjs - Fatal编程技术网

Javascript 反应类型错误:this.state.descriptions.map不是函数

Javascript 反应类型错误:this.state.descriptions.map不是函数,javascript,reactjs,Javascript,Reactjs,我正在试图纠正这个错误 我试图做的是呈现一个由以下函数构建的自动表单: let descriptionsForm = ( <form> {this.state.descriptions.map((description, index) => ( <Input key={index} elementType={description.elementTyp

我正在试图纠正这个错误

我试图做的是呈现一个由以下函数构建的自动表单:

let descriptionsForm = (
        <form>
        {this.state.descriptions.map((description, index) => (
            <Input
                key={index}
                elementType={description.elementType}
                elemenyConfig={description.elementConfig}
                value={description.value}
                invalid={!description.valid}
                shouldValidate={description.validation}
                touched={description.touched}
                changed={(event) => this.descriptionInputChangedHandler(event, index)}
                />
        ))}
        </form>
    )
descriptionInputChangedHandler = (event, index) => {
    console.log("ORIGINAL: ", this.state.descriptions)
    const updatedDescriptions = {
        ...this.state.descriptions
    };

    const updatedDescriptionElement = {
        ...updatedDescriptions[index]
    };
    updatedDescriptionElement.value = event.target.value;
    updatedDescriptionElement.valid = this.checkValidity(updatedDescriptionElement.value, updatedDescriptionElement.validation);
    updatedDescriptionElement.touched = true;
    updatedDescriptions[index] = updatedDescriptionElement;

    let formIsValid = true;
    for (let index in updatedDescriptions) {
        formIsValid = updatedDescriptions[index].valid && formIsValid;
    }
    console.log("UPDATED D: ", updatedDescriptions);

    this.setState({descriptions: updatedDescriptions, descriptionFormIsValid: formIsValid})
}
console.log()看起来像这样,我认为应该是正确的

我想,既然在启动时正确地呈现了输入槽,那么在更新数据时应该会发生一些事情,我对此一无所知


感谢您的帮助。

原始是一个数组,更新的D是一个对象

    const updatedDescriptions = {
       ...this.state.descriptions
    };
应该是:

    const updatedDescriptions = [
       ...this.state.descriptions
    ];

你建议的解决方案是什么?很有效!谢谢你从控制台日志的第一行是否有“0”键中发现了这一点?是的,这是引起我注意的第一件事。原来的是[…],而另一个是{…}。