【发布时间】:2019-12-11 07:23:16
【问题描述】:
你能帮我吗?我正在为这个问题苦苦挣扎 将新数据添加到数据库时,有什么方法可以更新平面列表 我正在使用 redux
有人可以帮忙吗? 从 componentDidMount 我从 redux 操作调用函数,所以我得到数据这是第一次渲染
这是我的带有 redux action 和 reducer 的代码 代码示例
componentDidMount() {this.props.Orders()}
render() {
{
this.props.data != null ? <FlatList
style={{ flex: 1 }}
data={this.props.data.orders}
renderItem={this._renderListItem}
initialNumToRender={50}
keyExtractor={item => (item.order.id).toString()}
/> : null
}
);
}
}
const mapStateToProps = state => {
return {
error: state.orders.error,
loading: state.orders.loading,
data: state.orders.data
}
}
export default connect(mapStateToProps, { Orders })(Pending);```
i try to use
extraData={this.props.data.orders}
extraData={this.props}
extraData={this.state}
nothing is working
//action where i call the api
export const Orders = () => {
return (dispatch) => {
dispatch({ type: ORDERS_ATTEMPT });
axios({
url: '**',
method: 'POST',
//data: data,
headers: {
Accept: 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
}
})
.then(resp => handleResponse(dispatch, resp.data))
.catch(error => console.error(error));
};
}
// rducer
import {
ORDERS_ATTEMPT,
ORDERS_SUCCESS,
ORDERS_FAILED
} from '../actions/types';
const INITIAL_STATE = { data: null, loading: false, error: '', }
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case ORDERS_ATTEMPT:
return { ...INITIAL_STATE, loading: true }
case ORDERS_FAILED:
return { ...INITIAL_STATE, loading: false, error: action.error }
case ORDERS_SUCCESS:
return { ...INITIAL_STATE, loading: false, data: action.data }
default:
return state;
}
}
【问题讨论】:
-
当你更新道具时,它会自动更新视图。你能显示你在哪里更新你的数据吗?请记住,每次更新数据时都必须返回新数组。
标签: reactjs react-native redux react-native-flatlist