У меня две разные записи, которые выбираются по-разному из разных вызовов API, и я хочу, чтобы две записи отображались
на той же странице, используя реагировать редукса.
Если я получаю записи отдельно, как в записи 1 и 2, все работает нормально, но
Если я попытался отобразить записи 1 и 2 вместе на одной странице, я получаю сообщение об ошибке
TypeError: Cannot read property 'items2' of undefined
at RecordPage.render
Запись 1 работает нормально, если доставляется отдельно
import React from 'react';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
import { userActions } from '../_actions';
class RecordPage extends React.Component {
constructor(props) {
super(props);
this.state = {
us: 0
};
}
componentDidMount() {
this.props.dispatch(userActions.getAll_Record1());
//this.props.dispatch(userActions.getAll_Record2());
}
render() {
const { rec1, recs1 } = this.props;
return (
<div style={{background:'red'}} className="well col-md-6 col-md-offset-3">
{recs1.items1 &&
<ul>
<h1> First Records</h1>
{recs1.items1.map((rec1, index) =>
<li key={rec1.id}>
{ rec1.name+' '+rec1.id}
</li>
)}
</ul>
}
<p>
First Record as per rec1
</p>
</div>
);
}
}
function mapStateToProps(state) {
const { recs1, authentication } = state;
const { rec1 } = authentication;
return {
rec1,
recs1
};
}
const connectedRecordPage = connect(mapStateToProps)(RecordPage);
export { connectedRecordPage as RecordPage};
Запись 2 работает нормально, если выбирается отдельно
import React from 'react';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
import { userActions } from '../_actions';
class RecordPage extends React.Component {
constructor(props) {
super(props);
this.state = {
us: 0
};
}
componentDidMount() {
//this.props.dispatch(userActions.getAll_Record1());
this.props.dispatch(userActions.getAll_Record2());
}
render() {
const { rec2, recs2 } = this.props;
return (
<div style={{background:'red'}} className="well col-md-6 col-md-offset-3">
{recs2.items2 &&
<ul>
<h1>Second Records </h1>
{recs2.items2.map((rec2, index) =>
<li key={rec2.id}>
{ rec2.email+' '+rec2.id}
</li>
)}
</ul>
}
<p>
Second Record as per rec2
</p>
</div>
);
}
}
function mapStateToProps(state) {
const { recs2, authentication } = state;
const { rec2 } = authentication;
return {
rec2,
recs2
};
}
const connectedRecordPage = connect(mapStateToProps)(RecordPage);
export { connectedRecordPage as RecordPage};
Вот моя проблема. Я хочу отобразить записи 1 и 2 вместе на одной странице, но получаю ошибку
TypeError: Cannot read property 'items2' of undefined
at RecordPage.render
Код для отображения записи 1 и 2 вместе
import React from 'react';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
import { userActions } from '../_actions';
class RecordPage extends React.Component {
constructor(props) {
super(props);
this.state = {
us: 0
};
}
componentDidMount() {
//get record1
this.props.dispatch(userActions.getAll_Record1());
//get record 2
this.props.dispatch(userActions.getAll_Record2());
}
render() {
const { rec1, recs1 } = this.props;
const { rec2, recs2 } = this.props
return (
<div style={{background:'red'}} className="well col-md-6 col-md-offset-3">
// show first record
{recs1.items1 &&
<ul>
<h1> First Records</h1>
{recs1.items1.map((rec1, index) =>
<li key={rec1.id}>
{ rec1.name+' '+rec1.id}
</li>
)}
</ul>
}
// show second record
{recs2.items2 &&
<ul>
<h1> First Records</h1>
{recs2.items2.map((rec2, index) =>
<li key={rec2.id}>
{ rec2.email+' '+rec2.id}
</li>
)}
</ul>
}
<p>
show first and second record together
</p>
</div>
);
}
}
function mapStateToProps(state) {
const { recs1, authentication } = state;
const { rec1 } = authentication;
return {
rec1,
recs1
};
}
const connectedRecordPage = connect(mapStateToProps)(RecordPage);
export { connectedRecordPage as RecordPage};
Я не знаю, если проблема в коде ниже
componentDidMount() {
//get record1
this.props.dispatch(userActions.getAll_Record1());
//get record 2
this.props.dispatch(userActions.getAll_Record2());
}
or
function mapStateToProps(state) {
const { recs1, authentication } = state;
const { rec1 } = authentication;
return {
rec1,
recs1
};
}