【发布时间】:2019-02-22 08:54:31
【问题描述】:
我从 API 调用中请求了一些需要过滤的数据。
我正在使用 Redux 而不是本地状态。
这是我的行动:
import ActionTypes from '../constants/ActionTypes';
export const passengersDataAction = passengersData => ({
type: ActionTypes.PASSENGERS_DATA,
// This is the array of objects that I need to search through
payload: { passengersData },
});
export const searchParamAction = searchParam => ({
type: ActionTypes.SEARCH_PARAM,
// This is the param that I need to send to passengersData
// in order to get a new array of objects
payload: { searchParam },
});
这是我的减速器:
import createReducer from '../../../redux/createReducer';
import ActionTypes from '../constants/ActionTypes';
const initialState = {
passengersData: [],
searchParam: '',
};
const handlers = {
[ActionTypes.PASSENGERS_DATA](state, action) {
return {
...state,
passengersData: action.payload.passengersData,
};
},
[ActionTypes.SEARCH_PARAM](state, action) {
return {
...state,
searchParam: action.payload.searchParam,
};
},
};
export default createReducer(initialState, handlers);
上面是reducer。
我想要的是根据searchParam 的值返回一个新的对象数组。
类似这样的:
[ActionTypes.SEARCH_PARAM](state, action) {
return {
...state,
passengersData://HERE GOES THE NEW ARRAY BASED ON WHAT searchParam RETURNS,
searchParam: action.payload.searchParam,
};
},
在我这样做的组件中:
<View>
<TextInput
style={PassengersStyles.SearchBox}
// searchParamActionHandler sends the input value to the update the reducer
onChangeText={text => searchParamActionHandler(text)}
value={searchParam}
placeholder="Search..."
/>
</View>
<Text>{searchParam}</Text>
<PassengerCardBasedOnRoute searchParam={searchParam} />
PassengerCardBasedOnRoute 是渲染来自passengersData 的对象数组的组件。
像这样:
{passengersData.map(info => (
<PassengersInfo
key={info.id}
searchParam={this.props.searchParam}
cardinalpoint={info.cardinalpoint}
name={info.name}
address={info.address}
datetime={info.timestamp}
/>
}
顺便说一句,这就是对象数组的外观:
[
{
"id": 3,
"name": "Marcos Alonso",
"address": "Sabana",
"phone": "712321222",
"pickup": 0,
"cardinalpoint": "N",
"latitude": "9.93683450",
"longitude": "-84.10991830",
"timestamp": "2019-02-19 21:23:46",
"dropofftimestamp": null,
"pickuptimestamp": null,
"deleted": null,
"driver": 1
},
...
]
那么,我怎样才能返回这个新数组来呈现搜索条件?
【问题讨论】:
-
是
name或address还是什么的搜索? -
嗨@codekaizer,是的。按名称。
标签: javascript reactjs ecmascript-6 redux react-redux