У меня есть следующий метод:
const getAgentData = () => {
axios.get('http://localhost:3000/api/agent', {
headers: {
'Content-Type': 'application/json'
}
})
.then(async res => {
const dbData = res.data.data;
let dataForTable = dbData.map( el => {
let obj = {};
obj._id = el._id;
obj.name = el.name;
obj.phone = el.phone;
if(el.name) {obj.email = el.email}
return obj;
})
await dispatch({ type: 'ADD_PHOTOGRAPHERS', dataForTable });
})
.then(() => {
setLoading(false)
})
.catch((error) => {
console.error(error)
})
}
Я обновляю состояние избыточности с помощью этой строки: await dispatch({ type: 'ADD_PHOTOGRAPHERS', dataForTable });
в дочернем компоненте, я запускаю это:
componentDidMount() {
console.log(this.props.photographers)
}
В исходном состоянии this.props.photographers = []; это то, что записывается на консоль, оно никогда не регистрирует обновленное состояние избыточности. Насколько я понимаю, редукс должен автоматически обновляться, и он должен console.log обновлять состояние. Любая идея, что я делаю не так?
I also tried logging data with the props being here but it's also an empty array:
class DataTableComponent extends Component {
constructor(props) {
super(props)
this.state = {
data: this.props.photographers,
loading: false,
name: '',
phone: '',
email: '',
}
}
...
Моя карта редукции для реквизита в дочернем компоненте, который я описываю:
function mapStateToProps(state) {
return {
photographers: state.Customizer.photographers
}
}
export default connect(mapStateToProps)(DataTableComponent);