Javascript 如何修复错误:";必须将组件传递给connect返回的函数。相反,收到{}";,在我的React Redux应用程序中?

Javascript 如何修复错误:";必须将组件传递给connect返回的函数。相反,收到{}";,在我的React Redux应用程序中?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误: [![在此处输入图像描述][2][2] App.js(组件): 从“React”导入React; 从“react”导入{Component}; 从“react redux”导入{connect} 从“../actions”导入{fetchData}; 从“/

我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:我有错误:
[![在此处输入图像描述][2][2]

App.js(组件):

从“React”导入React;
从“react”导入{Component};
从“react redux”导入{connect}
从“../actions”导入{fetchData};
从“/TableData”导入TableData;
从“/TableSearch”导入表搜索;
导出函数searchFilter(搜索,数据){
返回data.filter(n=>n.term.toLowerCase().includes(search));
}
出口施工天数=[“23-08-2019”、“24-08-2019”、“25-08-2019”];
类根扩展了React.Component{
componentDidMount(){
this.props.onFetchData(this.props.day);
}
render(){
const{search,shift,data,filteredData,onFilter,onSetSearch,onFetchData}=this.props;
返回(
onSetSearch(e.target.value)}
onSearch={()=>onFilter()}/>
{days&&days.map((day,i)=>(
onFetchData(天)}
className={i==day?“活动”:“}>{day}
))}

{data&&Object.keys(data.map)(n=>( onFilter({shift:e.target.dataset.shift})} className={n==shift?“活动”:“}>{n}shift ))} {数据&&} ); } } export const ConnectedRoot=connect( (状态)=>状态, (调度)=>({ onFilter:(args)=>dispatch({type:'RUN_FILTER',…args}), onSetSearch:(search)=>dispatch({type:'SET_search',search}), onFetchData:(天)=>调度(fetchData(天)) }) ); [1]: https://i.stack.imgur.com/M7Onv.jpg [2]: https://i.stack.imgur.com/x0b9i.jpg
在将connect应用到根组件时,您似乎错过了

export const ConnectedRoot = connect(             
  (state) => state,
  (dispatch) => ({
    onFilter: (args) => dispatch({ type: 'RUN_FILTER', ...args }),
    onSetSearch: (search) => dispatch({ type: 'SET_SEARCH', search }),
    onFetchData: (day) => dispatch(fetchData(day))
  })
)(Root);
您需要在ConnectedRoot函数中将(根)添加到connect的末尾

export const ConnectedRoot = connect(             
  (state) => state,
  (dispatch) => ({
    onFilter: (args) => dispatch({ type: 'RUN_FILTER', ...args }),
    onSetSearch: (search) => dispatch({ type: 'SET_SEARCH', search }),
    onFetchData: (day) => dispatch(fetchData(day))
  })
)(Root);

状态仅存在于组件内部。看起来您正试图在操作中使用
this.state
。这里要做的是使用
day
变量而不是this.state.day,您必须更改
response=wait
中的变量。在Axios调用的URL中有一个
this.state.day
const response=wait fetch(
{days[day]}');`这就是我说的
${days[day]}
是从“./components/app”导入{days}的更改;导出函数fetchData(day){return async(dispatch)=>{dispatch({type:'LOAD_DATA_START',day});const response=wait fetch({days[day]}
);const DATA=(wait response.json()).body;dispatch({type:'LOAD_DATA_END',DATA});dispatch({type:'SET_SHIFT',DATA})}
从“./components/app导入{days}”;导出函数fetchData(day){return async(dispatch)=>{dispatch({type:'LOAD_DATA_START',day});const response=wait fetch(`api.iev.aero/api/flights/${days[day]});const DATA=(wait response.json()).body;dispatch({type:'LOAD_DATA_END',DATA});dispatch({type:'SET_SHIFT',DATA})
export const ConnectedRoot = connect(             
  (state) => state,
  (dispatch) => ({
    onFilter: (args) => dispatch({ type: 'RUN_FILTER', ...args }),
    onSetSearch: (search) => dispatch({ type: 'SET_SEARCH', search }),
    onFetchData: (day) => dispatch(fetchData(day))
  })
)(Root);