React - componentWillReceiveProps中的setState

Ben*_*ene 35 javascript reactjs

这合法吗?

componentWillReceiveProps: function(nextProps) {
        if (typeof nextProps.contact != 'undefined') {
            this.setState({forename: nextProps.contact.forename});
            this.setState({surname: nextProps.contact.surname});
            this.setState({phone: nextProps.contact.phone});
            this.setState({email: nextProps.contact.email});
        }
    }
Run Code Online (Sandbox Code Playgroud)

因为我不知道如何填充我的输入,但仍然能够让用户编辑输入.所以我提出了这个解决方案,而不是试图操纵this.props.

有什么建议?

Mik*_*nov 38

根据反应文档,您的代码是合法的.

您也可以考虑将此代码放在getInitialState方法中,因为根据另一个反应文档初始化来自props不是反模式.

您还可以使用一个setState方法调用替换多个调用:

 this.setState({forename: nextProps.contact.forename,
                surname: nextProps.contact.surname,
                phone: nextProps.contact.phone,
                email: nextProps.contact.email});
Run Code Online (Sandbox Code Playgroud)