gpt4 book ai didi

reactjs - mapStateToProps 不提供状态数据

转载 作者:行者123 更新时间:2023-12-03 14:27:14 27 4
gpt4 key购买 nike

我有这个错误:

TypeError: Cannot read property 'map' of undefined

并且不知道如何this.props.movi​​es未定义,而我将initialState声明为[],然后它必须直接去渲染?

所以有文件:

Reducer.js

import * as types from "./ActionTypes.js";

const initialState = { movies: [] };

export const reducer = (state = initialState, action) => {
console.log(state.movies);
switch (action.type) {
case types.GET_MOVIES:
return {
...state,
movies: action.value
};
default:
return state;
}
};

电影.js

import React, { Component } from "react";
import { connect } from "react-redux";
import MovieItem from "./MovieItem";

const mapStateToProps = state => ({
movies: state.movies
});

class Movies extends Component {
render() {
let movieItems = this.props.movies.map(movie => {
return <MovieItem movie={movie} />;
});
return <div className="Movies">{movieItems}</div>;
}
}

export default connect(mapStateToProps, null)(Movies);

即使我添加像这样的 if 语句

if (this.props.movies){
...
}else return 1;

它从不重新渲染

最佳答案

应该是:

const mapStateToProps = state => ({
movies: state.reducer.movies
});

因为你的初始状态是一个对象:

initialState = { movies: [] };

并且您正在使用combineReducers,如下所示:

const rootReducer = combineReducers({ reducer: reducer }); 

现在,该 reducer 的所有 initialState 都可以通过 state.reducer.propertyName 访问。

注意:不要使用reducer,最好使用一些直观的名称,例如moviesReducer。稍后,如果您添加更多 reducer ,那么它将有助于识别数据。

关于reactjs - mapStateToProps 不提供状态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003572/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com