useContextで受け取ったarrayに対して表示/非表示を切り替えるために
以下のようなチェックボックスを実装しました。
チェックボックスをクリックしたタイミングでエラーが発生します。
対処方法を教えてください。mm
作ったコンポーネント
typescript
1const ActivityPanel = () => { 2 const [{ array}] = React.useContext(AppContext); 3 const [visibillities, setVisibillities] = React.useState({}); 4 5 const handleVisibillityChange = React.useCallback((e) => { 6 e.persist(); 7 8 const newState = {}; 9 newState[e.target.value] = true; // ★e.target.value → "value"など定数にするとエラーが発生しない。 10 setVisibillities((prevState) => ({ ...prevState, ...newState })); // この行でエラーが発生。 11 }, []); 12 13 const Visibillities = Object.keys(array).map((k, i) => ( 14 <label key={k}> 15 <input 16 type="checkbox" 17 value={k} 18 checked={visibillities[k]} 19 onChange={handleVisibillityChange} 20 /> 21 <span>{k}</span> 22 </label> 23 )); 24 25 return <>{Visibillities}</>; 26};
エラー
コンソールで下記のエラーが出ます。
Warning: A component is changing an uncontrolled input of type checkbox to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://fb.me/react-controlled-components
環境
"react": "^16.8.6",
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。