如何在Reactjs中访问组件的defaultProps中的状态

时间:2018-02-07 10:06:51

标签: javascript reactjs ecmascript-6 react-props

我需要获取类的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的状态并将其传递到- include: archive.yml artifact="{{item}}" with_subelements: - "{{ artifacts }}" - templates

2 个答案:

答案 0 :(得分:1)

我担心你不能。在启动组件之前调用getDefaultProps。你不能在组件之外使用状态。

答案 1 :(得分:0)

我不完全明白你要做什么。请解释一下。

如果您尝试为密码字段设置默认道具,则可以将其设置为字符串值。如果您希望默认密码prop为&#39; password123&#39;然后将其设置为&#39;密码123&#39;。

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

听起来你正试图将默认道具设置为某人最终会在某个表单中输入的值,在将来的某个时刻。您无法将默认值设置为某人将来决定的内容。这需要时间旅行。