我有一个关于 prop 和函数组件的看似微不足道的问题。基本上,我有一个容器组件,它在用户点击按钮触发状态改变时呈现一个模态组件。模态是一个无状态的函数组件,其中包含一些需要连接到容器组件内部函数的输入字段。
我的问题:当用户与无状态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
,我猜传递props到function组件的"解构"语法让我有点困惑,即:const SomeComponent = ({ someProps }) = > { // ... };
5条答案
按热度按时间ao218c7q1#
您需要为需要调用的每个函数单独传递每个prop
然后在CreateProfile组件中,您可以执行以下操作
通过反结构化,它会将匹配的属性名称/值赋给传入的变量。名称必须与属性匹配
还是直接去做
在每个地方调用
props.onHide
或任何你试图访问的 prop 。bxfogqkk2#
我使用react函数组件
在父组件中,首先传递props,如下所示
然后在子组件中使用props,如下所示
vltsax253#
补充上述答案。
如果
React
抱怨你传递的任何props
是undefined
,那么你需要用default
值来解构那些props(如果传递函数,数组或对象常量时很常见),例如:0yg35tkg4#
仅在源组件上执行此操作
然后在目标组件上执行此操作
of1yzvn45#
finalfreq's answer的变体
你可以单独传递一些 prop ,如果你真的想要的话,可以传递所有的父 prop (不推荐,但有时很方便)
然后在CreateProfile组件中,您可以执行以下操作
并逐个摧毁 prop