Javascript Redux应用程序:无法读取属性';过滤器';未定义的
我的减速器有错误: 道具Javascript Redux应用程序:无法读取属性';过滤器';未定义的,javascript,reactjs,redux,Javascript,Reactjs,Redux,我的减速器有错误: 道具实际-这是飞机起飞或到达的时间,此属性位于我的API中 API具有以下结构: {"body":{ "departure":[{actual: value},{term: value}], "arrival":[{....},{......}]} } 代码: airplanes.js(减速器) app.js(主要组件) 从“React”导入React; 从“react”导入{Component}; 从“react redux”导入{connect}; 从“./actio
实际
-这是飞机起飞或到达的时间,此属性位于我的API中
API具有以下结构:
{"body":{
"departure":[{actual: value},{term: value}],
"arrival":[{....},{......}]}
}
代码:
airplanes.js(减速器)
app.js(主要组件)
从“React”导入React;
从“react”导入{Component};
从“react redux”导入{connect};
从“./actions”导入{fetchData};
从“/TableData”导入TableData;
从“/TableSearch”导入表搜索;
从“/Header”导入标题;
从“/Footer”导入页脚;
导入“/app.css”;
导出函数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.propReducer.day]);
}
render(){
const{onFilter,onSetSearch,onFetchData}=this.props;
const{search,shift,data,filteredData}=this.props.propReducer;
console.log(filteredData);
返回(
搜索航班
onSetSearch(e.target.value)}
onSearch={()=>onFilter()}
/>
{天&&
days.map((day,i)=>(
onFetchData(天)}
className={i==day?“活动”:“}
>
{day}
))}
{数据&&
Object.keys(data.map)(n=>(
onFilter({shift:e.target.dataset.shift})}
className={n==shift?“活动”:“noActive”}
>
{n}
))}
{数据&&}
);
}
}
导出常量ConnectedRoot=connect(
state=>state,
分派=>({
onFilter:args=>dispatch({type:“RUN_FILTER”,…args}),
onSetSearch:search=>dispatch({type:“SET_search”,search}),
onFetchData:day=>dispatch(fetchData(day))
})
)(根);
顺便说一句,函数searchFilter
是写在属性term
上的,而不是属性actual
。可能部分原因是这个,但不仅仅是这个,因为我试图用actual
替换术语
,但错误仍然存在
如何修复此错误?给定
onFilter
app.js中的action creator:
onFilter: args => dispatch({ type: "RUN_FILTER", ...args })
<TableSearch ... onSearch={(value) => onFilter({search: value})} />
在没有第一个参数的情况下调用时:
<TableSearch ... onSearch={() => onFilter()} />
但是,在调用的
TableSearch.js
中还有一个问题:
<button ... onClick={() => onSearch(value)}>
…并根据业务逻辑使用
action.search | | state.search
在中进行过滤(…)
。非常感谢您的回答!你能帮我纠正沙盒错误吗?我只是react和redux的初学者,不了解您编写的所有内容以及在哪里修复它。我了解一些内容,但不是所有内容。我只是认为这会比我问您代码中要替换的内容、位置和行更快。我的沙盒:请问到底什么不清楚,更好的解释可能也会帮助未来的用户。好的:1)在aiplanes.js中,我更改了:state.data[action.shift | | state.shift]。filter
,但下面我有一行:case“LOAD_data_END”:var newData=action.payload.data[state.shift].filter(x=>{
TableSearch…onSearch={(value)=>onFilter({search:value}})}/>我是否应该在app.js中编写它?3)并在过滤器中使用action.search | | state.search
。我应该在哪个文件和哪些行中更改它?1)这取决于您是否使用shift
有效载荷发送LOAD\u DATA\u END
操作-可能不是。2)是的,在使用
的任何地方。3)不知道所需的行为是什么,搜索应该如何工作。但是案例中的某个地方“运行过滤器”:
我可以给你写一封写在github中的电子邮件吗?写起来比写在评论中更方便?
state.data[action.shift || state.shift].filter
<button ... onClick={() => onSearch(value)}>
<TableSearch ... onSearch={(value) => onFilter({search: value})} />