我正在制作一个反应应用程序,显示您搜索的宠物小精灵的详细信息。所以我有一个Home组件,它有一个输入字段+提交按钮。 我想在我的主要组件中呈现我的api调用。
我的问题是:当我输入提交时,如何将位于我的主组件中的此输入字段中的值传递给我的主要组件?
我需要这个值来更新我的主要组件中的口袋妖怪名称状态,以获取我的提取调用的口袋妖怪名称。
我需要将此值存储在我的'searchValue'状态中。 Main component details
任何提示?
答案 0 :(得分:1)
使用ref in reactjs可以实现此目的的一种方法,在主要组件内部,您需要提供参考,例如:
componentDidMount() {
this.props.onRef(this);
}
// Delete the reference once component is unmounted
componentWillUnmount() {
this.props.onRef(undefined);
}
然后创建一个方法,该方法将从Home
组件接收值,然后setState
接收值:
method(values) {
this.setState({ searchValue: values });
}
现在在你的Home组件中你需要在输入之前引用方法组件,(你可以适当地修改它)
import Home from './Home'
<Home onRef={ref => (this.home = ref)} />
<Form onSubmit={e => { this.onSubmit(e) }}
确保在主要组件中添加onSubmit
方法,该方法会将值发送到Home
组件
onSubmit = values => {
this.home.method(values);
}
上阅读有关Ref和DOM的更多信息
答案 1 :(得分:0)
我建议你看一下redux这是国家管理的好工具。 Redux
将确保您拥有单一的事实来源。
你需要做的是创建一个Action,它会调度一个事件来更新状态,Reducer会更新状态({{1}中搜索键的值})。您的redux-store
组件将读取API中的数据(相同Main
- Action
方式)&amp;渲染它而不必担心当前的状态。如果您对此感兴趣,我可以详细解释整个架构。这种架构将减少错误和清晰的信息流,包括组件之间的共享状态。
我知道这听起来有点过于复杂,但如果您的应用程序正在增长,那么值得一试。
很少有建议: 您的主要组件有太多的逻辑。组件应具有尽可能少的逻辑,因此它们更具确定性。另请阅读React Stateless functional components
如果您想采用Reducer
路径