1

我需要获取defaultProps类的要访问的组件的状态,这是我的代码:

class Headcomponent extends React.Component {

    constructor(props) {

        super(props);
        this.state = {
            email: '',
            password: '',
            formErrors: {
                email: '',
                password: ''
            },
            emailValid: false,
            passwordValid: false,
            formValid: false,
            items: [],

        }
    }


    this.setState({
        formErrors: fieldValidationErrors,
        emailValid: emailValid,
        passwordValid: passwordValid
    }, this.validateForm);
}

validateForm() {
    this.setState({
        formValid: this.state.emailValid &&
            this.state.passwordValid
    });
}


render() {
    return ( <
        Form fields = {
            this.props.form
        }
        buttonText = "Submit" / >
    );
}
}    

Headcomponent.propTypes = {
    form: PropTypes.array,
};

Headcomponent.defaultProps = {
    form: [{
            label: 'label1',
            placeholder: 'Input 1',
            value: {
                this.state.password
            } //this throws an error
        },
        {
            label: 'label2',
            placeholder: 'Placeholder for Input 2',
        },
    ],
};

export default Headcomponent;

{this.state.password}抛出错误,因为它在类之外。我如何获得状态password并将其传递到内部Headcomponent.defaultProps

4

2 回答 2

3

恐怕你不能。getDefaultProps 在组件启动之前被调用。您不能像这样在组件之外使用状态。

于 2018-02-07T10:11:12.980 回答
0

我不完全理解你想要做什么。请解释。

如果您尝试为密码字段等设置默认道具,则可以将其设置为字符串值。如果您希望默认密码道具为“password123”,则将其设置为“password123”。

当我试图理解这一点时,尚不清楚您如何在反应组件中设置 this.state.password 。您的构造函数中有一个浮动的 setState 调用,但它没有列出密码。

听起来您正在尝试将默认道具设置为将来某个时候某人最终会在表单中键入的值。您不能将默认值设置为某人将来决定的内容。那将需要时间旅行。

于 2018-02-07T10:33:17.763 回答