前提・実現したいこと
reactの練習で、selectを使って人の画像を変更するプログラムを書きたいのですが、エラーが出てしまい、思うようにいきません。
プルダウンで変更すると、以下のようなエラーが出てしまいます。
恐らく、setStateが行われる関数(imgChange)まで、optionのvalueの値が渡っていないのだと思うのですが、、
どなたかアドバイスをご教授頂けないでしょうか。
ちなみにエラーメッセージは同じものが二つ出ています。
発生している問題・エラーメッセージ
Uncaught TypeError: Cannot read property 'value' of undefined at onChange (<anonymous>:49:38) at HTMLUnknownElement.callCallback (react-dom.development.js:182) at Object.invokeGuardedCallbackDev (react-dom.development.js:231) at invokeGuardedCallback (react-dom.development.js:286) at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:300) at executeDispatch (react-dom.development.js:383) at executeDispatchesInOrder (react-dom.development.js:408) at executeDispatchesAndRelease (react-dom.development.js:3401) at executeDispatchesAndReleaseTopLevel (react-dom.development.js:3410) at forEachAccumulated (react-dom.development.js:3382)
該当のソースコード
<body> <div id="root"></div> <script type="text/babel"> (() => { const pcts = [ "img0のサンプル", "img1のサンプル", "img2のサンプル", "img3のサンプル" ]; function AppHeader(props) { return ( <div> <img src={props.pct} /> <select name="slcGiv" onChange={() => props.imgChange(this.value)}> <option value="0">たけし</option> <option value="1">ももこ</option> <option value="2">ゆうた</option> <option value="3">えみこ</option> </select> </div> ); } class App extends React.Component { constructor() { super(); this.state = { pcts: pcts, pct: "img0のサンプル" }; this.imgChange = this.imgChange.bind(this); } imgChange(num) { const pcts = this.state.pcts.slice(); const pos = num; const pct = pcts[pos] this.setState({ pct: pct }); } render() { return ( <div className="container"> <AppHeader pct={this.state.pct} imgChange={this.imgChange} /> </div> ); } } ReactDOM.render( <App />, document.getElementById('root') ); })(); </script> </body>
試したこと
なにが間違っているのか分からず、手が出ません。
補足情報(FW/ツールのバージョンなど)
react javascript html/css VScode
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/14 00:58
2020/07/14 03:19