Reactjs React Native:Redux-是否可以从App.js发送到Redux商店?
我正在开发一个react原生应用程序,我把所有东西都连接到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可能更适合这样的东西。如果这个假设是错误的,我道歉,因为
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" });