gpt4 book ai didi

javascript - react ;父级从子级获取输入数据

转载 作者:行者123 更新时间:2023-11-27 22:34:00 24 4
gpt4 key购买 nike

我正在使用 React 制作一个应用程序,它从下拉菜单中获取用户输入,根据输入的值进行 api 调用并显示结果。组件的结构是这样的。

Search
Input
Result

因此,SearchInputResult 组件的父组件。我想将值从 Input 传递到发生调用的 Search。然后调用的结果被传递给Result(令人惊讶的是)。

我可以在 Search 中对 API 调用的值进行硬编码,结果显示正常。

但我无法弄清楚如何将输入字段的值从 Input 传递到 Search。我认为我应该从 Search 访问子(输入) Prop ,但我不知道如何设置它们,因为您不应该让组件设置它自己的 Prop 。

我知道这是错误的,但到目前为止我所得到的是:

let Input = React.createClass ({

componentDidMount(){
this.props.genre = this.refs.genre.value;
// or this.state.genre = this.refs.genre ?
},

render() {
return <div>
<select ref="genre">
<option value="28">Action</option>
<option value="12">Adventure</option>
<option value="16">Animation</option>
<option value="35">Comedy</option>

<option value="37">Western</option>
</select>

<select>
<option ref="rating" type="text" placeholder="Rating"/>
</select>

<select>
<option ref="type" type="text" placeholder="Type"/>
</select>

<input type="submit" value="Submit"/>
</div>
}
});

export default Input;

搜索

let Search = React.createClass ({
getInitialState(){
return {
movies: ['Men In Black']
};
},

componentDidMount(){

let genre = this.props.genre || '';
let url = `http://theapi.org/3/discover/movie?${key}&with_genres=${genre}`;
Request.get(url).then((response) => {
console.log('response.body.results', response.body.results)
this.setState({
movies: response.body.results.map(function(movie){
return movie.title
})
});
});
},

render(){
console.log(this.state.movies)
return (
<div>
<Input/>
<ul>
{this.state.movies.map( function(movie){
return <Results key={movie.id} data={movie}/>;
})}
</ul>
</div>
);
}
});

export default Search;

我希望你能看到我在这里想做什么。感觉并没有那么困难,但是我对 React 的 props 和 state 的掌握是基本的,即使在阅读了文档之后我也需要一些解释。

我想我的问题是,我是否应该将数据分配给 child 的 Prop 或状态,以及如何从 parent 那里访问它?

最佳答案

只要记住这一点,当您创建像输入这样的子组件时,它是否需要跟踪组件内的状态?如果没有,则不需要在子组件中调用componentDidMount。只需将其值传递给子组件内的父组件,如下所示

let Input = React.createClass ({

selectHandler(){ this.props.cb(value) }

render() {
return <div>
<select onClick ={this.selectHandler.bind(this)} ref="genre">
<option value="28">Action</option>
<option value="12">Adventure</option>
<option value="16">Animation</option>
<option value="35">Comedy</option>

<option value="37">Western</option>
</select> ........

关于javascript - react ;父级从子级获取输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39302130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com