[英]React js error : Cannot read property '0' of undefined
this line is giving me an error {gridValues[props.gridIndex]}
.这条线给了我一个错误
{gridValues[props.gridIndex]}
。 The goal I'm trying to achieve is that my gridValues array should be displayed on my screen for a specific index.我试图实现的目标是我的 gridValues 数组应该显示在我的屏幕上以获取特定索引。 After onClick the value should change to either 'X' or 'O' depending on the situation.
在 onClick 之后,该值应根据情况更改为“X”或“O”。 Basically this is tic tac toe X and O render between two players.
基本上这是两个玩家之间的 tic tac toe X 和 O 渲染。
import React, { useState } from "react";
import "./Box.css";
function Box(props) {
const [gridValues, setGridValue] = useState([
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "
]);
const [symbol, setSymbol] = useState("X");
function handleClick(index) {
console.log('here')
if (gridValues[index] === " ") {
setGridValue((prevValues) => {
for (var i = 0; i < prevValues.length; i++) {
if (i === index) {
prevValues[i] = symbol;
}
}
});
if (symbol === "X") {
setSymbol("O");
} else {
setSymbol("X");
}
}
}
return (
<div
key={props.gridIndex}
onClick={() => handleClick(props.gridIndex)}
className="box"
>
{gridValues[props.gridIndex]}
</div>
);
}
export default Box;
Your updater function must have a return value.您的更新程序 function 必须有返回值。 If you don't return an array, gridValues will be set to
undefined
.如果您不返回数组,则 gridValues 将设置为
undefined
。
setGridValue((prevValues) => {
const newValues = prevValues.slice()
newValues[index] = symbol
return newValues
})
your function setGridvalue have to return a new array, you cant change direct to prevValues您的 function setGridvalue 必须返回一个新数组,您不能直接更改为 prevValues
setGridValue((prevValues) => {
for (var i = 0; i < prevValues.length; i++) {
if (i === index) {
prevValues[i] = symbol;
}
}
});
to至
setGridValue((prevValues) => {
let newArr = [...prevValues]
newArr[index] = symbol;
return newArr;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.