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);