Javascript 异步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

我最近开始学习React Native,我正在尝试实现Redux来管理我的应用程序的状态

由于我有使用React JS的经验,我以通常使用React JS的方式实现了状态管理Redux。除了异步api调用之外,其他一切似乎都正常工作。商店中的道具会发生变化,但组件道具中的道具不会发生变化

下面是我如何设置redux存储的

我的减速器部件

这是根部减速器

动作部件

主要成分

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
});