iRo*_*tia 1 reactjs redux react-redux
我通过遵循一些教程来学习 redux。在这里我收到一个错误
Object(...) 不是函数
在这一行
export default connect(null, { fetchPosts } )(Posts);
Run Code Online (Sandbox Code Playgroud)
以下容器的
import React, { Component } from 'react';
import { connect } from 'react'
import axios from 'axios';
import { fetchPosts } from '../actions/postActions.js';
class Posts extends Component {
componentWillMount() {
this.props.fetchPosts();
}
render() {
const postItems = this.state.posts.map(el => {
return (
<div key={el.id}>
<h3>{el.title} </h3>
<p>{el.body} </p>
</div>
)
})
return (
<div>
<h1> Posts </h1>
{postItems}
</div>
);
}
}
export default connect(null, { fetchPosts } )(Posts);
Run Code Online (Sandbox Code Playgroud)
Ps:我知道它也会抛出地图错误,但我目前并不担心。
因为它说Object(...) 不是一个函数并标记了行导出,所以我们在导出中唯一的对象是 fetchPosts ,它看起来像这样(它是一个动作函数)
import { FETCH_POST, NEW_POST } from './type.js'
import axios from 'axios';
export const fetchPosts = () => {
return function (dispatch) {
axios.get("https://jsonplaceholder.typicode.com/posts").then((response) => dispatch({
type: FETCH_POST,
payload: response
}))
}
}
Run Code Online (Sandbox Code Playgroud)
由于我不确定相同的相关代码,fetchPosts 将一个动作分派到以下减速器
import { FETCH_POST, NEW_POST } from '../actions/type.js'
const initialState = {
items: [],
item: {}
}
export default function(state = initialState, action) {
switch (action.type) {
case FETCH_POST:
return {
...state,
items: action.payload
}
default:
return state
}
}
Run Code Online (Sandbox Code Playgroud)
稍后在我们的 rootreducer.js 文件中使用 combineReducers 进行组合(然后将其导入我们创建 store 的 store.js)
谁能告诉我我做错了什么,我们该如何解决?
React 没有命名connect导出,它属于react-redux. 所以,你应该像这样导入它:
import { connect } from "react-redux";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2717 次 |
| 最近记录: |