如何从父元素获取子元素状态
How to get child's element state from parent
我有一个 SortSelect(child) 组件,我想将其放入我的 Home(parent) 组件中。
export default function SortSelect() {
const classes = useStyles();
const [sortType, setSortType] = useState('asc');
const handleChange = (event) => {
setSortType(event.target.value);
};
return (
<FormControl className={classes.formControl}>
<Select
value={sortType}
onChange={handleChange}
displayEmpty
className={classes.selectEmpty}
inputProps={{ 'aria-label': 'Without label' }}
>
<MenuItem value='asc'>Count asc</MenuItem>
<MenuItem value='desc'>Count desc</MenuItem>
<MenuItem value='a-z'>Name A-Z</MenuItem>
<MenuItem value='z-a'>Name Z-A</MenuItem>
</Select>
<FormHelperText>Sort by</FormHelperText>
</FormControl>
);
}
我需要获取 SortSelect 的 sortType 状态,以便对我的数组进行排序。我该怎么做?
这听起来确实不像是您应该使用 React 实现的模式。如果父组件需要那个状态,那么它应该处理它并将状态作为 prop 传递给 SortSelect
.
如果它只是暂时需要 sortType
而不是让它处于它的状态,那么你可以简单地将回调从 Home
传递到 SortSelect
,它在 [=10= 中调用]的handleChange
函数。
请注意,可以使用 React 的 useImperativeHandle 钩子将状态公开给父组件,但除非您 100% 确定自己在做什么,否则您真的不应该使用它。
我有一个 SortSelect(child) 组件,我想将其放入我的 Home(parent) 组件中。
export default function SortSelect() {
const classes = useStyles();
const [sortType, setSortType] = useState('asc');
const handleChange = (event) => {
setSortType(event.target.value);
};
return (
<FormControl className={classes.formControl}>
<Select
value={sortType}
onChange={handleChange}
displayEmpty
className={classes.selectEmpty}
inputProps={{ 'aria-label': 'Without label' }}
>
<MenuItem value='asc'>Count asc</MenuItem>
<MenuItem value='desc'>Count desc</MenuItem>
<MenuItem value='a-z'>Name A-Z</MenuItem>
<MenuItem value='z-a'>Name Z-A</MenuItem>
</Select>
<FormHelperText>Sort by</FormHelperText>
</FormControl>
);
}
我需要获取 SortSelect 的 sortType 状态,以便对我的数组进行排序。我该怎么做?
这听起来确实不像是您应该使用 React 实现的模式。如果父组件需要那个状态,那么它应该处理它并将状态作为 prop 传递给 SortSelect
.
如果它只是暂时需要 sortType
而不是让它处于它的状态,那么你可以简单地将回调从 Home
传递到 SortSelect
,它在 [=10= 中调用]的handleChange
函数。
请注意,可以使用 React 的 useImperativeHandle 钩子将状态公开给父组件,但除非您 100% 确定自己在做什么,否则您真的不应该使用它。