reactjs - 切片函数应用于未定义
问题描述
我正在开发一个反应应用程序,当我在输入字段中键入一些文本时,该字段应与城市列表匹配。我创建了一个动作并接受两个输入(列表和城市),我应用list.slice()
并检查了值。当我在输入字段中输入另一个字符时,它显示error
切片已应用于undefined
.
//app.js
inputHandler = event => {
event.preventDefault();
let val = event.target.value;
this.props.onCitySearch(this.props.cityList, val);
};
const mapStateToProps = state => {
return {
cityList: state.cities.citylist,
citiesSearched: state.cities.citySearched
};
};
const mapDispatchToProps = dispatch => {
return {
onFetch: () => dispatch(actions.fetchCities()),
onCitySearch: (list, city) => dispatch(actions.citySearched(list, city))
};
};
//actions.js
export const fetchCities = () => dispatch => {
fetch("http://localhost:8000/cities")
.then(res => res.json())
.then(data => {
return dispatch({
type: "FETCHCITIES",
cities: data
});
});
};
export const citySearched = (list, city) => dispatch => {
console.log(list);
const cities = list.filter(c => {
return c.name.toLowerCase().includes(city.toLowerCase());
});
localStorage.setItem("cities", JSON.stringify(cities));
return dispatch({
type: "CITIESSEARCHED",
city: cities
});
};
//citiesReducer
const initialState = {
citylist: [],
citySearched: []
};
const citiesReducer = (state = initialState, action) => {
switch (action.type) {
case "FETCHCITIES":
return {
...state,
citylist: action.cities
};
case "CITIESSEARCHED":
return {
citySearched: action.city
};
default:
return {
...state
};
}
};
export default citiesReducer;
解决方案
使用.filter instedof .slice
const citySearched= (list, city)=> (dispatch)=>{
const cities = list.filter((xyz) => {
return xyz.toLowerCase().includes(city.toLowerCase());
});
localStorage.setItem("cities",JSON.stringify(cities));
return dispatch({
type: 'CITIESSEARCHED', city: cities
});
};
推荐阅读
- python - 如何在日期时间范围比较中添加分钟?
- ios - 登录 facebook 问题
- sql - 获取 PostgreSQL 事件触发器的表名
- node.js - 填充来自不同模型的值 - Mongoose/MongoDB 集合 - NodeJS
- r - R中跨列的条件变异
- go - 如何从 JSON 数组中删除元素而不删除 Golang 中的下一个元素
- php - 在 PHP 中使用正则表达式获取配置文件 ID
- html - 使用 Firebase/MLNLTranslate 应用属性将 HTML 字符串翻译成
- wpf - 我们如何在 PreviewMouseLeftButtonUp 事件的 WPF 日历控件中触发日期选择
- python - Python tkinter(因此 IDLE)在 WSL 终端中不起作用