最佳答案
我有一个关于道具和功能组件的看似琐碎的问题。基本上,我有一个容器组件,它在状态改变时呈现一个 Modal 组件,该组件由用户单击按钮触发。该模式是一个无状态的函数组件,其中包含一些需要连接到容器组件中的函数的输入字段。
我的问题是: 当用户与无状态 Modal 组件中的表单字段交互时,如何使用生活在父组件中的函数来更改状态?我是不是传错道具了?先谢谢你。
集装箱
export default class LookupForm extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false
};
}
render() {
let close = () => this.setState({ showModal: false });
return (
... // other JSX syntax
<CreateProfile fields={this.props} show={this.state.showModal} onHide={close} />
);
}
firstNameChange(e) {
Actions.firstNameChange(e.target.value);
}
};
函数(模态)组件
const CreateProfile = ({ fields }) => {
console.log(fields);
return (
... // other JSX syntax
<Modal.Body>
<Panel>
<div className="entry-form">
<FormGroup>
<ControlLabel>First Name</ControlLabel>
<FormControl type="text"
onChange={fields.firstNameChange} placeholder="Jane"
/>
</FormGroup>
);
};
例如: 假设我想从 Modal 组件内部调用 this.firstNameChange
。我想把道具传递给函数组件的“解构”语法让我有点困惑。即:
const SomeComponent = ({ someProps }) = > { // ... };