![](/img/trans.png)
[英]How to set dynamic attributes in React Input Component from json props
[英]How to set elements from a json file into a React component
我嘗試使用 react 為我的網站創建一個 select 組件,當您編寫它時它工作正常,但是當使用 json 文件中的數據時,您可以看到所有選項,但是當您單擊一個時,它沒有被選中。 你可以在下面找到我的代碼:
function BasicSelect(props) {
let AllItems = () => props.category.items.map((item) => <MenuItem value={item}>{item}</MenuItem>)
const [item, setItem] = React.useState('');
const handleChange = (event) => {
setItem(event.target.value);
};
return (
<Box sx={{ minWidth: 130 }}>
<FormControl fullWidth>
<InputLabel id="demo-simple-select-label">{props.category.name}</InputLabel>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={item}
label={"Item"}
onChange={handleChange}
onClick={handleChange}
>
<AllItems/>
</Select>
</FormControl>
</Box>
);
}
這是我的 Json 文件:
{“名稱”:“背景”,“項目”:[“紅色”,“橙色”,“黃色”,“綠色”,“青色”,“藍色”,“avax”,“海灘”,“冬天”, “夏天”、“沙漠”、“森林”] }
我們以錯誤的方式使用AllItems
。 在這種情況下, AllItems
本身就是一個組件,因此當用戶單擊呈現在AllItems
組件內的MenuItem
時, Select
組件不會收到Change
事件。
解決此問題的方法是使AllItems
成為 function,而不是組件。 考慮下面的代碼片段。
const renderAllItems = () =>
props.category.items.map((item, index) => (
<MenuItem value={item} key={`${props.category}-${index}`}>
{item}
</MenuItem>
));
...
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={item}
label={"Item"}
onChange={handleChange}
>
{renderAllItems()}
</Select>
在這里您可以找到完整的工作示例。 https://codesandbox.io/s/gallant-shockley-lwhl8?file=/src/App.js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.