反应传递状态值给父

时间:2020-02-11 10:15:16

标签: javascript reactjs

我正在学习做出反应,并遇到状态值问题。我有一个功能组件(子组件),它具有下拉框可供选择,并且它们都有自己的状态。单击确认按钮后,状态值将使用prop函数传递给父类。

(Child class)
export default function NativeSelects(props){
    const [search_title, setTitle] = useState('')
    const [search_category,setCategory] = useState('')

    return (
        <div>
            <FormControl className={classes.formControl}>
                <InputLabel htmlFor="age-native-simple">Title</InputLabel>
                <Select
                    native
                    value={search_title}
                    onChange={e => setTitle(e.target.value)}
                    inputProps={{
                        name: 'search_title',
                        id: 'age-native-simple'
                    }}
                >
                    <option value="" />
                    <option value="option1">option1</option>
                    <option value="option2">option2</option>
                    <option value="option3">option3</option>
                </Select>
            </FormControl> 
            <FormControl className={classes.formControl}>
                <InputLabel htmlFor="age-native-helper">Category</InputLabel>
                <Select
                    native 
                    value={search_category}
                    onChange={e => setCategory(e.target.value)}
                    inputProps={{
                        name: 'search_category',
                        id: 'age-native-simple'
                    }}
                >
                    <option value=""/>
                    <option value="option1">option1</option>
                    <option value="option2">option2</option>
                    <option value="option3">option3</option>
                </Select>
            </FormControl>
            <Button variant="contained" color="primary" onClick={props.handler(search_title,search_category)}>Search</Button>
        </div>
    )
}
(Parent class)
searchProduct = (title,category) =>{
    fetch(`/search?title='${title}'&category='${category}'`)
    .then(response => response.json())
    .then(response => this.setState({ products: response.data }))
    .catch(err => console.error(err))
  }

  render(){
    return (
        <ChildClass handler = {() => this.searchProduct}/>
    )
  }

当我检查子类内部的状态值时,它正在正确更改。但是在父类中,第一个值成为一个对象,第二个值变为未定义。 我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

更改父类处理函数的调用

return (
        <ChildClass handler = {(title,category)=>this.searchProduct(title,category)}/>
    )

子类的更改:

 <Button variant="contained" color="primary" onClick={(title,category)=>props.handler(search_title,search_category)}>Search</Button>

答案 1 :(得分:0)

更改为父类中的关注对象。

<ChildClass handler = {this.searchProduct}/>

更改儿童班级

<Button
  variant="contained"
  color="primary"
  onClick={() => props.handler(search_title, search_category)}
>
  Search
</Button>;