[解決済み】React Propsが定義されていません。
2022-01-27 16:28:43
質問
props.updateBuildingがなぜ動作しないのか、理解に苦しんでいます。
以下は、propがrenderメソッド内にある場合に動作します。
class Buildings extends Component {
constructor(props) {
super(props);
}
componentWillMount() {
this.props.fetchBuildings();
}
renderBuildings(building) {
return (
<div>
<p> {building.name}</p>
</div>
);
}
render() {
return (
<div>
{this.props.buildings.map(this.renderBuildings)}
<button type="button" className="btn btn-success" onClick={this.props.updateBuilding.bind(this, 1)}>Edit</button>
</div>
);
}
}
function mapStateToProps(state) {
return { buildings: state.buildings.all };
}
function mapDispatchToProps(dispatch){
return bindActionCreators({ fetchBuildings, updateBuilding}, dispatch);
}
しかし
this.props.updateBuilding
をrenderBuildingsメソッドに渡すと、以下のようになります。
renderBuildings(building) {
return (
<div>
<p> {building.name}</p>
<button type="button" className="btn btn-success" onClick={this.props.updateBuilding.bind(this, building.id)}>Edit</button>
</div>
);
}
エラーが出ます。
Cannot read property 'props' of undefined
どうやら、プロップが
updateBuildings
が、renderBuildingsメソッド内にあると読み込めないのですが、何が原因なのかわかりません。
解決方法は?
このエラーは読み間違えです。
props
が未定義なのではなく
props
は未定義であり、これは
this
キーワードを使用することで、手動で map 関数のコンテキストを設定することができます。
this.props.buildings.map(this.renderBuildings, this)
またはインラインでバインドする
this.props.buildings.map(this.renderBuildings.bind(this))
関連
-
[解決済み] sh: react-scripts: npm start の実行後にコマンドが見つからない。
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] React-Router 4 キャッチオールルート
-
[解決済み] JavaScriptで変数が存在するか(定義されているか/初期化されているか)をチェックする
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] Reactのstateとpropsの違いとは?
-
[解決済み】 {this.props.children} に props を渡すには?}
-
[解決済み】JavaScriptで定義されていない変数を確認する方法
-
[解決済み] ReduxのmapToDispatchToProps()の引数で「dispatch」が関数でない件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Warning.Itが表示されるのはなぜですか?Functions are not valid as a React child?
-
[解決済み】React Propsが定義されていません。
-
[解決済み] react-router-domを使用する際に「Function components cannot be given refs」を回避するにはどうすればよいですか?
-
[解決済み] MUI Boxは何のためのコンポーネントですか?
-
[解決済み] ReactJS: Warning: setState(...): 既存の状態遷移の間に更新することはできません
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] Static HTML elements with event handlers require a role." を修正するにはどうすればよいですか?
-
[解決済み] 拡張子.tsと.tsxの違いは何ですか?どちらもreactのタイプスクリプトファイルの拡張子として使用されます。では、どこで使うべきなのでしょうか?
-
[解決済み] ESLintとTSLintの違い【クローズド】について
-
[解決済み] React JSXのforEach()でHTMLが出力されない