Javascript 异步API调用,Redux反应本机
我最近开始学习React Native,我正在尝试实现Redux来管理我的应用程序的状态 由于我有使用React JS的经验,我以通常使用React JS的方式实现了状态管理Redux。除了异步api调用之外,其他一切似乎都正常工作。商店中的道具会发生变化,但组件道具中的道具不会发生变化 下面是我如何设置redux存储的 我的减速器部件 这是根部减速器 动作部件 主要成分Javascript 异步API调用,Redux反应本机,javascript,reactjs,api,react-native,redux,Javascript,Reactjs,Api,React Native,Redux,我最近开始学习React Native,我正在尝试实现Redux来管理我的应用程序的状态 由于我有使用React JS的经验,我以通常使用React JS的方式实现了状态管理Redux。除了异步api调用之外,其他一切似乎都正常工作。商店中的道具会发生变化,但组件道具中的道具不会发生变化 下面是我如何设置redux存储的 我的减速器部件 这是根部减速器 动作部件 主要成分 import React,{Component}来自'React'; 从“react native”导入{View,Text
import React,{Component}来自'React';
从“react native”导入{View,Text,Button,ActivityIndicator};
从“../constants”导入{API,数据_FETCHED};
从“../actions”导入{apirest};
从'react redux'导入{connect};
类Home扩展组件{
组件willmount(){
康斯特发现电影=`https://jsonplaceholder.typicode.com/posts`;
this.fetchData(discoverurlmoves,DATA_FETCHED);
}
fetchData=(url,类型)=>{
this.props.apirest(url,类型);
}
应更新组件(下一步、上一步){
return nextrops!=prevProps
}
render(){
const{movie}=this.props;
//安慰道具
console.log('this.props',this.props);
让我们看电影;
如果(电影===未定义| |电影===空){
displayMovies=您需要将MapStateTrops
func定义为
movie : state.movie.movieResults
既然你把它们结合在一起
export default combineReducers({
movie : movieReducer
});
谢谢,非常感谢!我在试图解决这个问题时很生气。我现在面临另一个问题。道具更新了,但坏了。我的意思是它更新了前5-10个道具,然后更新了整个道具,使一些数据重复。哦,好的,你可以创建一个单独的问题,并提供相关细节,以便更多用户可以回答。我会等我有空的时候看看。谢谢。谢谢!一定会的!
import { combineReducers } from 'redux';
import movieReducer from './movieReducer';
export default combineReducers({
movie : movieReducer
});
import axios from 'axios';
import { FETCH_REQUEST_BEGIN, FETCH_REQUEST_FAILED } from '../constants';
const apiRequest = (url, type) => {
return dispatch => {
dispatch({
type : FETCH_REQUEST_BEGIN
});
axios.get(url)
.then((results) => {
dispatch({
type : type,
payload : results.data
});
}).catch((error) => {
dispatch({
type : FETCH_REQUEST_FAILED,
payload : error
});
});
}
}
export default apiRequest;
import React, { Component } from 'react';
import { View, Text, Button, ActivityIndicator } from 'react-native';
import { API, DATA_FETCHED } from '../constants';
import { apiRequest } from '../actions';
import { connect } from 'react-redux';
class Home extends Component {
componentWillMount() {
const discoverUrlMovies =`https://jsonplaceholder.typicode.com/posts`;
this.fetchData(discoverUrlMovies, DATA_FETCHED);
}
fetchData = (url, type) => {
this.props.apiRequest(url, type);
}
shouldComponentUpdate(nextProps, prevProps){
return nextProps != prevProps
}
render() {
const { movie } = this.props;
//console out the props
console.log('this.props', this.props);
let displayMovies;
if(movie === undefined || movie === null ){
displayMovies = <ActivityIndicator size = 'large' color = '#121222'/>
}else {
displayMovies = <Text>Working</Text>
}
return (
<View style = {{flex: 1}}>
<Text>Home</Text>
{
//display result
displayMovies
}
</View>
);
}
}
const mapStateToProps = (state) => {
return {
movie : state.movieResults
}
}
export default connect(mapStateToProps, { apiRequest })(Home);
movie : state.movie.movieResults
export default combineReducers({
movie : movieReducer
});