如何将 json 文件中的元素设置为 React 组件

Posted

技术标签:

【中文标题】如何将 json 文件中的元素设置为 React 组件【英文标题】:How to set elements from a json file into a React component 【发布时间】:2022-01-10 01:04:42 【问题描述】:

我尝试使用 react 为我的网站创建一个选择组件,当您编写它时它工作正常,但是当使用 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 文件:


    "name" : "background",
    "items" : ["red", "orange", "yellow" , "green" , "cyan" ,"blue" , "avax" , "beach", "winter" , "summer" , "desert", "forest"]

【问题讨论】:

你从哪里得到 元素?一个库,还是自定义的? 【参考方案1】:

我们以错误的方式使用AllItems。 在这种情况下,AllItems 本身就是一个组件,所以当用户点击呈现在AllItems 组件内部的MenuItem 时,Select 组件不会收到Change 事件。

解决这个问题的方法是使AllItems 成为一个函数,而不是一个组件。 考虑下面的 sn-p。

  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

【讨论】:

是的,现在可以了,谢谢!!

以上是关于如何将 json 文件中的元素设置为 React 组件的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 文件中的项目数据动态加载到 React

如何在for循环中设置react ref

如何将 JSON 与 react-ace 一起使用?

如何从 React 中的 JSON 文件导入数据?

从 JSON 渲染 React Native 元素

如何从 JSON 文件加载 React-Table 中的图像