我有一个代码类似于下面:
const Example = (props) => {
//custom hook that returns a country name selected by user
{ selectedCountry, setSelectedCountry } = useSelectedCountry();
const [country, setCountry] = useState();
const countryList = props.countryList;
return(
<Box>
<label htmlFor='country'>Country</label>
<Select
sx={{ m: 1, width: inputSelectWidth, mt: 3, height: 35, ml: 12 }}
value={country}
onChange={(e) => { setCountry(e.target.value); } }
>
{
countryList.map(country => {
return (
<MenuItem
value={country.countryName}
key={country.countryID}
>
{country.countryName}
</MenuItem>
);
})
}
</Select>
</Box>
);
}
export default Example;
我需要country
在selectedCountry
改变时改变。但是selectedCountry
在另一个组件中更新。如果我在这个组件中console.log(selectedCountry);
,它会在我每次从其他组件中选择不同的国家时更新。
尽管country
应该在selectedCountry
改变时改变,但是country
可以有它自己的值。
selectedCountry: A, country: A
selectedCountry: B, country: B
selectedCountry: B, country: C
selectedCountry: B, country: D
我尝试了value={selectedCountry}
,但是country
和selectedCountry
的值总是相同的。我需要实现上面的场景。
我不知道该怎么做。有什么主意吗?
1条答案
按热度按时间xu3bshqb1#
你可以使用
React.useEffect
钩子来设置你所需要的行为,在你的Example
组件中代码可能看起来像这样:使用你认为最好的选项,并将所需的逻辑放入函数中,不要忘记在文件的开头导入
React
或useEffect
钩子。更多关于React docs的内容:https://reactjs.org/docs/hooks-effect.html.