只是想回应一些其他答案,同时为您提供一些更具体的上下文。
UserSignup.js
import React, { Component } from 'react';
import SignupForm from './SignupForm';
export default class UserSignup extends Component {
render() {
return (
<SignupForm lockAccountType={true}/>
);
}
}
SignupForm.js
import React, { Component, PropTypes } from 'react';
import { Text } from 'react-native';
export default class SignupForm extends Component {
constructor(props) {
super(props);
this.state = {lockAccountType: this.props.lockAccountType};
}
render() {
return (
<Text>
{'lockAccountType: ' + this.state.lockAccountType}
</Text>
);
}
}
SignupForm.propTypes = {
lockAccountType: React.PropTypes.bool.isRequired
};
(显然,请随意修改SignupForm.render()。这只是一个概念验证。)
正如其他人提到的,您希望将 lockAccountType 值作为道具传递给注册表单。
在我的示例中,该值是静态的 (true)。如果你想改变这个值,你可以把它作为UserSignup中的一个状态变量:
UserSignup.js(修改)
import React, { Component } from 'react';
import SignupForm from './SignupForm';
export default class UserSignup extends Component {
constructor() {
super();
this.state = {lockAccountType: true};
}
render() {
return (
<SignupForm lockAccountType={this.state.lockAccountType}/>
);
}
}
您可能希望添加可以调整此状态值的功能。通常,对您的状态的任何更改都会导致该组件的重新渲染。在这种情况下,更改将传播到 SignupForm 元素,您应该会获得所需的结果。
最后的几点说明
- 我建议在你的类中指定 propTypes。在您开发时,这会在您为道具分配值时警告您任何问题。在此示例中,如果未指定
lockAccountType 或类型错误,我们将看到警告。如果您删除 .isRequired,它只会警告您错误类型。
- 如果您不想直接从
SignupForm 类中更改lockAccountType,您可以完全删除构造函数,只在该类中使用this.props.lockAccountType。在那种情况下,SignupForm 将是一个无状态类。
希望这会有所帮助。