Здравствуйте!
import './style.css';
import { useState } from 'react';
function Square({value, handleClick}){
return <button
className="square"
onClick={handleClick}
>
{value}
</button>
};
export function Board() {
const [squares, setSquare] = useState(Array(9).fill(null));
function squareHandleClick(e){
setSquare("X");
};
return (
<>
<div className="board-row">
<Square value={squares} handleClick={squareHandleClick}/>
<Square />
<Square value={squares} handleClick={squareHandleClick}/>
</div>
</>
);
}
почему при клике в двух компонентах
<Square />
отображается значение "X" ? Через пропсы мы передаём массив значений
value={squares}
а не конкретное значение из этого массива (например
squares[0]
) а по факту реакт берёт первый элемент этого массива и отображает его. Если проверить это с использованием обычного
js
то результат будет предсказуемым и ДОМ элементе отобразится текстовой представление массива (насколько помню с помощью вызова
[].toString()
) т.е. полного массива, а не одного его элемента.