我是Redux和reducer的全新产品。我不能让我的第一个代码工作。任何人都可以告诉我为什么(index.js)引用BooksReducer?我没有这样的道具,组件或文件。它会抛出一个像这样的错误: “未捕获的错误:Reducer”books“在初始化期间返回undefined。如果传递给reducer的状态未定义,则必须显式返回初始状态。我如何初始化它?如何初始化reducer? Reducer返回undefined
reducer_book.js:
export default function(){
return
[
{title: 'Crash bandicoot'},
{title: 'Crash bandicoot 2: Cortex strikes back'},
{title: 'Crash bandicoot 3: Warped'},
{title: 'Crash Team Racing'},
{title: 'Crash Bash'}
]
}
index.js:
const rootReducer = combineReducers({
books: BooksReducer
});
export default rootReducer;
App.js:
export default class App extends Component {
render() {
return (
<div>
<BookList />
</div>
);
}
}
book_list.js:
class BookList extends Component{
renderList(){
return this.props.books.map((book) => {
return(
<li key={book.title} className="list-group-item">{book.title}</li>
);
});
}
render(){
return(
<ul className="list-group col-sm-4">
{this.renderList()}
</ul>
)
}
}
function mapStateToProps(state){
return {
books: state.books
};
}
export default connect(mapStateToProps)(BookList);
您需要将您的reducer导入到index.js中,或者只需使用reducer函数内联。 –
我导入它:/从'./reducer_books'导入BooksReducer;但是,当我在reducer_books文件中没有像这样的组件时,仍然不明白为什么它引用BooksReducer。 – JustMatthew
BooksReducer是您从该文件导出的“默认”导出。它的var BooksReducer = require(“./ books_reducer”)的等价性; 你可以任意命名。 –