コンポーネントに入っているときにエラーが発生した場合、Link
をクリックして戻ってみてください。リンクの後にコンポーネントをレンダリングする際にエラーが発生しました
基本的流れは以下のとおりです。 WeddingList
ページ- >クリック- >Wedding Page
- >クリック- >WeddingList
私は戻ってクリックしたときにそう、このエラーがトリガされます。ここで
TypeError:
this.props.weddings.map
is not a functionWeddingList.renderWeddings
は私のコードです:
WeddingList.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchWeddings } from '../../actions';
import { Link } from 'react-router-dom';
class WeddingList extends Component {
componentWillMount() {
this.props.fetchWeddings();
}
renderWeddings() {
return this.props.weddings.map(wedding => {
return (
<div className="row" key = { wedding._id }>
<div className="col s10 offset-s1" key={wedding._id}>
<div className="card blue-grey darken-1" key={wedding._id}>
<div className="card-content white-text">
<span className="card-title">{wedding.coupleName1} & {wedding.coupleName2}</span>
</div>
<div className="card-action">
<Link
to={'/wedding/'+wedding.pageName}
className="btn">
Visit!
</Link>
</div>
</div>
</div>
</div>
);
})
}
render() {
return (
<div>
{this.renderWeddings()}
</div>
);
}
}
function mapStateToProps({ weddings }) {
return { weddings };
}
export default connect(mapStateToProps, { fetchWeddings })(WeddingList);
Wedding.js
import React from 'react';
import WeddingPage from './weddings/WeddingPage';
import { Link } from 'react-router-dom';
const Wedding = props => {
return (
<div>
<WeddingPage {...props}/>
<Link to={'/weddings'} className="btn">Back</Link>
</div>
);
}
export default Wedding;
weddingsReducer.js
import { FETCH_WEDDINGS, FETCH_WEDDING } from '../actions/types';
export default function(state = [], action) {
switch (action.type) {
case FETCH_WEDDINGS:
return action.payload;
case FETCH_WEDDING:
return action.payload;
default:
return state;
}
}
reducers.js this.props.weddings
は最初のレンダリングでundefined
であるように見え、事前
PropTypesとソリューションが動作しませんでした。 initialStateの使用方法は?私はあなたの質問に私のレデューサーjsを含めます。 –
PropTypeはあなたの小道具を確認し、小道具が大丈夫でない場合はエラーを記録します。とにかく、有効なウェディングを渡す必要があります –
私はウェディングのリストをcomponentWillMount()で取得しています。それは私がページに入るか、ページを更新するときに機能します。しかし、私はページを離れて再び入力するときは機能しません。 –