首页 > 解决方案 > ReactJS:已经在上层范围内声明

问题描述

我已经声明了一个变量

const [listRealm, setListRealm] = useState([
    {
      value: null,
      label: 'select one',
    },
  ]);

  const findList= async () => {
    await axios.get(`${apiUrl}`).then(resp => {
      resp.data.map(res => {
        setListRealm(listRealm => [...listRealm, { value: res.id, label: res.name}]); // error here
      });
    });
  };


  useEffect(() => {
    findList();
  }, []);

现在我的问题是我收到错误:

'listRealm' 已在上层范围内声明 @typescript-eslint/no-shadow

考虑到我正在设置此变量,我不明白如何更改变量的名称。

我能怎么做?谢谢你

标签: javascriptreactjs

解决方案


您在setListRealm回调中使用的名称可以是您想要的任何名称,因此您可以直接使用它previouslistRealm或其他名称:

setListRealm(previousListRealm => [...previousListRealm, { value: res.id, label: res.name}]);

它不必与您从中输入值的常量的名称相匹配useState


推荐阅读