Javascript 分派不是reducer中的一个函数
我的行动Javascript 分派不是reducer中的一个函数,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我的行动 const fetchDataApi = (getState) => { let { data } = getState() return axios.get('http://api.openweathermap.org/data/2.5/weather?q=london,uk&appid=26aacf43db7ecfa2ecd85500eaee9920').then(thunkdata => { co
const fetchDataApi = (getState) => {
let { data } = getState()
return axios.get('http://api.openweathermap.org/data/2.5/weather?q=london,uk&appid=26aacf43db7ecfa2ecd85500eaee9920').then(thunkdata => {
console.log(thunkdata)
return {
[data]: thunkdata
}
})
}
const fetchgetDataCall = () => {
return (dispatch, getState) => {
return dispatch(fetchDataApi(getState))
}
}
export const getData = (dispatch) => {
dispatch(fetchgetDataCall())
return {
type: actionTypes.GETDATA,
}
}
在action.js中,我希望从我的api获取数据并存储在数据中,因此我使用getstate获取数据变量并将数据分配给它
我的日历组件,在其中我将被叫者连接到actionType
import React, { Component } from 'react';
// import 'moment/locale/it.js';
import { DatePicker, DatePickerInput } from 'rc-datepicker';
// import { ca } from 'date-fns/esm/locale';
import 'rc-datepicker/lib/style.css';
import { connect } from 'react-redux';
import { getData } from '../store/actions/actions'
const date = '2015-06-26' // or Date or Moment.js
class Callender extends Component {
//These is a method es7
onChangeandler = (jsDate, dateString, event) => {
// event.preventDefault()
console.log("[we are lokking at js date]",jsDate);
this.props.getWether();
console.log("[we are seeing the props storeDta]",this.props.storeData);
}
//Next method
render() {
return (
<div>
<DatePicker onChange={this.onChangeandler} value={date} />
</div>
)
}
}
const mapStateToProps = state =>({
storeData: state.data
})
const mapDispatchToProps = (dispatch) =>({
getWether: () => dispatch(getData())
})
export default connect(mapStateToProps,mapDispatchToProps)(Callender)
actionTypes.js
export const POSTDATA="POSTDATA";
export const GETDATA = "GETDATA";
1) 我正在callender.js文件中调用我的动作创建者
2) 在这里,我使用thunk中间件获取数据,并将其存储在redux store中的数据变量中
3) 我找不到问题,请帮帮我你的行为看起来很奇怪。
getData
action创建者分派fetchgetDataCall
,该调用分派fetchDataApi
,并且只返回一些对象{[data]:thunkdata}
,其中属性数据
此时可能为空。因此,操作对象中没有任何属性类型
或数据
getData
所做的第二件事是返回对象{type:actionTypes.getData}
,因此在动作对象中没有任何属性data
尝试这样做(根据@mbojko答案更新):
const getData=()=>{
返回(发送)=>{
返回axios.get('http://api.openweathermap.org/data/2.5/weather?q=london,uk&appid=26aacf43db7ecfa2ecd85500eaee9920')。然后(thunkdata=>{
退货({
类型:actionTypes.GETDATA,
数据:thunkdata
})
})
}
}
你的行为看起来很奇怪。getData
action创建者分派fetchgetDataCall
,该调用分派fetchDataApi
,并且只返回一些对象{[data]:thunkdata}
,其中属性数据
此时可能为空。因此,操作对象中没有任何属性类型
或数据
getData
所做的第二件事是返回对象{type:actionTypes.getData}
,因此在动作对象中没有任何属性data
尝试这样做(根据@mbojko答案更新):
const getData=()=>{
返回(发送)=>{
返回axios.get('http://api.openweathermap.org/data/2.5/weather?q=london,uk&appid=26aacf43db7ecfa2ecd85500eaee9920')。然后(thunkdata=>{
退货({
类型:actionTypes.GETDATA,
数据:thunkdata
})
})
}
}
比较您的函数签名
export const getData = (dispatch) => {
你如何称呼它:
const mapDispatchToProps = (dispatch) =>({
getWether: () => dispatch(getData())
})
缺少参数(因此未定义dispatch
,显然不是函数)
可能应该是
dispatch(getData(dispatch))
。比较函数签名
export const getData = (dispatch) => {
你如何称呼它:
const mapDispatchToProps = (dispatch) =>({
getWether: () => dispatch(getData())
})
缺少参数(因此未定义dispatch
,显然不是函数)
应该是
dispatch(getData(dispatch))
,可能吧。你能展示一下你创建redux商店的代码吗?你能展示一下你创建redux商店的代码吗?我在回答中根据@mbojko的答案编辑了代码。非常感谢,但我错过了什么?我教过我可以拆分代码并使用它。我想我做了同样的事情,但划分了代码。我想我做了什么missedI根据@mbojko的答案编辑了我答案中的代码。非常感谢,但是我错过了什么我教过我可以拆分代码并使用它。我想我做了同样的事情,但拆分了代码我错过了什么我尝试了,然后我得到的错误动作必须是普通对象。对异步操作使用自定义中间件。因为您的fetchgetDataCall
返回的是函数而不是普通对象。很抱歉打扰您,但我使用dispatch执行函数,而dispatch反过来返回对象是的,我尝试了,然后得到的错误操作必须是普通对象。对异步操作使用自定义中间件。因为您的fetchgetDataCall
返回的是函数而不是普通对象。很抱歉打扰您,我使用dispatch执行了函数,而dispatch又返回了对象