reactjs - 如何从 redux 存储中获取数据并在 React Native 中的组件中使用它
问题描述
我用 react native 设置了 Redux。我设法从动作创建者的后端获得响应res.data。但是每当我在我的组件中使用它时,它总是评估为未定义或为空。
我的动作创造者
export const getData = () => (dispatch: any) => {
axios
.get(`${API_URL}/api/request`)
.then((res) => {
dispatch({
type: REQUESTS_FETCHED,
requestData: res.data,
});
console.log(res.data);
})
.catch((err) => {
console.error(err);
});
};
还有我的减速机
const request = (state = initialState, action: any) => {
switch (action.type) {
case REQUESTS_FETCHED:
return {
...state,
requestData: action.requestData,
};
default:
return state;
}
};
组件如下
class Request extends Component {
componentDidMount = () => {
const {getData} = this.props;
getData();
};
render() {
const {requestData}: any = this.props;
return (
<View style={styles.container}>
{requestData &&
requestData.map((data: any) => {
<Text>{data.value}</Text>
})}
</View>
);
}
}
const mapStateToProps = (state: any) => ({
requestData: state.request.requestdata,
});
const mapDispatchToProps = {
getData,
};
export default connect(mapStateToProps, mapDispatchToProps)(Request);
注意这是我在 reactjs 中使用的相同代码。谢谢!
解决方案
您需要返回该文本元素。只需删除您的渲染方法中的大括号(箭头函数将直接以这种方式返回值),即
render() {
const {requestData}: any = this.props;
return (
<View style={styles.container}>
{requestData && requestData.map((data: any) => <Text>{data.value}</Text>)}
</View>
);
}
推荐阅读
- azure - 如何使用 StackExchange.Redis 为 Azure Redis 缓存的所有键全局设置键过期值?
- javascript - 如何从 Materialise 下拉菜单中获取多个选项以自动查询 API?
- python - Groupby 多个属性并传递结果/保存到_excel
- javascript - 除非我将 console.log(this.state) 包装在 setTimeout 中,否则无法在 .then(json) fetch 调用之外访问 this.state 或 this.props
- azure - ADLS Gen 1 与 ADLA U-SQL 作业的通用存储 Blob 相比性能较差
- angular - 调整mat-form-field Angular Material的高度
- jpa - 在 JPA 中,如何读取 Sybase 存储过程的返回值?
- windows - 为什么 _gmtime32 和 _gmtime64 支持的最高日期在不同年份的 1 月 19 日?
- python - 如何在 numpy 中加速大张量的 logsumexp?
- c# - 使用带有 for 循环的 Raycast 制作视野(使用 Unity C#)