0

我在尝试定义值时遇到打字稿反应问题。

这是错误:

“{}”类型的参数不能分配给“SetStateAction<boolean[]>”类型的参数。类型 '{}' 不可分配给类型 '(prevState: boolean[]) => boolean[]'。类型“{}”不匹配签名“(prevState: boolean[]): boolean[]'.ts(2345)

这是我的以下代码:

const [addButtonFruits, setAddButtonFruits] = useState([true]);

useEffect(() => {
    const initialAddButtonFruits = {};
    fruitsArray.map((each) => (initialAddButtonFruits[each] = true));
    setAddButtonFruits(initialAddButtonFruits);
  }, []); // only executed for initial rendering
4

2 回答 2

1

错误消息准确地说明了问题所在。您的状态变量addButtonFruits是一个布尔数组。并且您正在尝试为其分配一个对象。

尝试:

    const initialAddButtonFruits = fruitsArray.map(each => true);
    setAddButtonFruits(initialAddButtonFruits);

如果要存储对象:

const [addButtonFruits, setAddButtonFruits] = useState({});

useEffect(() => {
    const initialAddButtonFruits = {};
    fruitsArray.forEach((each) => (initialAddButtonFruits[each] = true));
    setAddButtonFruits(initialAddButtonFruits);
  }, []); // only executed for initial rendering
于 2021-08-19T06:01:55.107 回答
0

addButtonFruits 是一个布尔数组。您不能将空对象分配给布尔数组变量。

const initialAddButtonFruits = [];
于 2021-08-19T06:01:37.023 回答