【发布时间】:2021-03-19 00:57:41
【问题描述】:
我试图在用户选择下拉列表后更新状态,但是,选择的选项永远不会改变。见 gif——https://recordit.co/KH2Pqn34bp。
我很困惑,理想情况下,在使用setFilterOptions 更新状态后,它应该用新值重新渲染这个组件,但它不会发生。有人可以帮忙看看吗?我在这里想念什么?非常感谢!
沙盒上的示例代码 -- https://codesandbox.io/s/react-select-default-value-forked-1ybdk?file=/index.js
const SearchFilter = () => {
const [filterOptions, setFilterOptions] = useContext(SearchFilterContext);
let curSort = filterOptions['sortType'] || DEFAULT_SORT_OPTION;
const handleSortChange = (option) => {
setFilterOptions(previous => Object.assign(previous, { 'sortType': option }))
};
return (
<span className='filter-container'>
<Select options={SORT_TYPE_OPTIONS} value={curSort} onChange={handleSortChange}/>
</span>
);
};
【问题讨论】:
-
你能提供一个最小的、可重现的例子吗?我的猜测是您没有在
Select组件中使用onChange属性。 -
@Yousaf 我试图在沙盒上得到这个——codesandbox.io/s/react-select-default-value-forked-1ybdk?file=/…,希望这会有所帮助。
-
@Yousaf 你能解释一下关于不使用
onChangeprop 的更多信息吗?因为handleSortChange基本上就是onChange方法,里面包含setFilterOptions。
标签: reactjs react-hooks use-state use-context