Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React Native:Redux-是否可以从App.js发送到Redux商店?_Reactjs_React Native_React Redux_Redux Reducers - Fatal编程技术网

Reactjs React Native:Redux-是否可以从App.js发送到Redux商店?

Reactjs React Native:Redux-是否可以从App.js发送到Redux商店?,reactjs,react-native,react-redux,redux-reducers,Reactjs,React Native,React Redux,Redux Reducers,我正在开发一个react原生应用程序,我把所有东西都连接到redux商店,这样我就可以用这种方式管理数据 我很好奇从App.js组件发送数据的可能性,目前我主要使用该组件来路由我的应用程序。用例是在App.js中进行API调用,然后在redux store中设置数据,这样应用程序每次打开时都会进行调用。例如,我知道componentDidMount在应用程序打开时会运行一次代码,但除非关闭并重新打开,否则不会再次运行代码。我认为App.js可能更适合这样的东西。如果这个假设是错误的,我道歉,因为

我正在开发一个react原生应用程序,我把所有东西都连接到redux商店,这样我就可以用这种方式管理数据

我很好奇从
App.js
组件发送数据的可能性,目前我主要使用该组件来路由我的应用程序。用例是在
App.js
中进行API调用,然后在redux store中设置数据,这样应用程序每次打开时都会进行调用。例如,我知道componentDidMount在应用程序打开时会运行一次代码,但除非关闭并重新打开,否则不会再次运行代码。我认为
App.js
可能更适合这样的东西。如果这个假设是错误的,我道歉,因为我还在学习

在下面的示例中,如果可能的话,我将如何从
App.js
运行
callApi
setData
?或者我应该避免这种情况,尝试设置一个全局变量

下面是示例代码:

App.js

 import React, {Component} from 'react';
    import {createBottomTabNavigator} from 'react-navigation-tabs'
    import { createAppContainer, createSwitchNavigator } from 'react-navigation';
    import { Ionicons } from '@expo/vector-icons';
    import { Provider } from 'react-redux';
    import { createStore } from 'redux';
    
    import ourReducer from './store/reducer';
    const store = createStore(ourReducer);
    global.x = 'https://volleybuddy.metis-data.site'
    
    
    import Home from './components/Home'
    import Profile from './components/Profile'
    import Login from './components/Login'
    import SignUp from './components/SignUp'
    import StartScreen from './components/StartScreen'
    
    export default class App extends Component {
    
    
      render(){
    
        return (
          
          <Provider store={ store }>
            <AppContainer/>
          </Provider>
        );
        }
    }
    
    const bottomTabNavigator = createBottomTabNavigator(
      {
        Home: {
          screen: Home,
          navigationOptions: {
            tabBarIcon: ({ tintColor }) => (
              <Ionicons  name="ios-home" size={25} color={tintColor}/>
              // <Icon name="qrcode" size={25} color={tintColor} />
            )
          }
        },
        Profile: {
          screen: Profile,
          navigationOptions: {
            tabBarIcon: ({ tintColor }) => (
              // <Icon name="search" size={25} color={tintColor} />
              <Ionicons  name="md-person" size={25} color={tintColor}/>
            )
          }
        },
      },
      {
        initialRouteName: 'Home',
        tabBarOptions: {
          activeTintColor: '#eb6e3d'
        }
      }
    );
    
    const RootSwitch = createSwitchNavigator({ 
      StartScreen,
      SignUp,
      Login,
      bottomTabNavigator
      });
    
    const AppContainer = createAppContainer(RootSwitch);
Home.js(假设我想将callApi移动到App.js中运行)

import React,{Component}来自'React';
从'react redux'导入{connect};
类Home扩展组件{
//不是真正的代码,只是概念
callApi=()=>{
获取(…)
让数据=响应
this.props.setData(数据)
}
render(){
返回(
切换跟踪
);
}
}
常量mapStateToProps=(状态)=>{
常量{reducer}=状态
返回{reducer}
};
const mapDispachToProps=调度=>{
返回{
setData:(x)=>dispatch({type:“SET_DATA”,值:x}),
};
};
导出默认连接(MapStateTops,
mapDispachToProps
)(家)

您可以从应用程序中的任何位置发送数据,只要您可以使用
store.dispatch获取对应用程序的引用。在这种情况下,您可以在应用程序商店实例化后发送和操作应用程序组件,但应用程序组件本身未连接到应用程序商店,因此无法重新呈现以响应其更改,但在这种情况下,这对您来说应该不是问题。

是的,这是可能的

我有一个store.js文件,如下所示:

import { createStore, combineReducers, applyMiddleware} from 'redux'
import reducer from './reducers'
import thunk from 'redux-thunk';
const middleware =  applyMiddleware(thunk)
const store = createStore(reducer,middleware)



export default store;
import store from './src/store'
因此,在App.js文件中,我只需要像这样导入商店:

import { createStore, combineReducers, applyMiddleware} from 'redux'
import reducer from './reducers'
import thunk from 'redux-thunk';
const middleware =  applyMiddleware(thunk)
const store = createStore(reducer,middleware)



export default store;
import store from './src/store'
您可以致电调度:

 store.dispatch({ type: "ACTION_EXAMPLE" });