【发布时间】:2021-02-25 18:06:36
【问题描述】:
我正在尝试在 React 中构建一个本地搜索,该搜索由一个带有搜索输入的父组件和一个包含搜索结果列表的子组件组成。我创建了一个包含搜索查询和搜索结果列表的 React 状态对象。当输入字段更改时,将运行搜索以生成新的结果集,并更新两个属性(查询和结果)。搜索输入正在按预期更新,但子组件不会重新渲染,尽管其 prop 已更新。为简洁起见,我删除了一些代码,但如果您需要更多信息,请告诉我。
export const Search = () => {
let [searchState, setSearchState] = React.useState({});
let handleChange = (event) => {
searchState['results'] = searchProducts(event.target.value);
searchState['query'] = event.target.value;
setSearchState(searchState);
};
return (
<div>
<FormControl>
<Input
value={searchState.query}
onChange={handleChange}>
Search...
</Input>
</FormControl>
<SearchResults results={searchState.results}></SearchResults>
</div>
);
};
export const SearchResults = (props) => {
return (
<List>
{props.results?.map((product, index) => (
<ListItem key={index}>
<ListItemText primary={product.name}></ListItemText>
</ListItem>
))}
</List>
);
};
我的问题是:为什么 SearchResults 组件不会在 searchState.results 更改时重新呈现?
【问题讨论】:
标签: javascript reactjs