[英]Can I change my Redux state from outside a function component?
[英]How can I grab a value from a Redux store from outside of a component?
我需要使用組件外部的存儲值。
基本上我有這個:
// imports
import HomeScreen from '../screens/HomeScreen/HomeScreen';
import SettingsScreen from '../screens/SettingsScreen/SettingsScreen';
import FRoute from '../screens/HomeScreen/HomeScreen';
import SRoute from '../screens/SettingsScreen/SettingsScreen';
const HomeStack = createStackNavigator({
PickupHome: HomeScreen,
});
const SettingsStack = createStackNavigator({
PickupSettings: SettingsScreen,
});
export default createBottomTabNavigator({
HomeStack,
SettingsStack,
});
如您所見,它不是組件。 這是一個包含我的路線的文件。 它名為MainTabNavigator。 有了它,我需要執行以下操作:
import { createStackNavigator, createBottomTabNavigator } from 'react-navigation';
import HomeScreen from '../screens/HomeScreen/HomeScreen';
import SettingsScreen from '../screens/SettingsScreen/SettingsScreen';
import FRoute from '../screens/HomeScreen/HomeScreen';
import SRoute from '../screens/SettingsScreen/SettingsScreen';
const HomeStack = createStackNavigator({
// HERE I NEED TO USE THE VALUE FROM THE STORE
PickupHome: valueFromStore ? HomeScreen : FRoute,
});
const SettingsStack = createStackNavigator({
// HERE I NEED TO USE THE VALUE FROM THE STORE
PickupSettings: valueFromStore ? SettingsScreen : SRoute,
});
export default createBottomTabNavigator({
HomeStack,
SettingsStack,
});
如您所見,我無法像通常那樣,打電話給connect
或任何可以打電話給商店並將其作為道具傳遞的東西。
這是我做過的減速器:
import createReducer from '../../../redux/createReducer';
import ActionTypes from '../constants/ActionTypes';
const initialState = {
navigation: {
index: 0,
routes: [
{ key: '1', title: 'Title 1' },
{ key: '2', title: 'Title 2' },
],
},
};
const handlers = {
[ActionTypes.INDEX_ROUTE](state, action) {
return {
...state,
navigation: {
...state.navigation,
index: action.payload.index,
},
};
},
};
export default createReducer(initialState, handlers);
動作:
import ActionTypes from '../constants/ActionTypes';
export const indexRouteAction = index => ({
type: ActionTypes.INDEX_ROUTE,
payload: {
index,
},
});
export default indexRouteAction;
例如:我在另一個組件上使用該存儲,並且可以像這樣訪問其值:
export default compose(
connect(
store => ({
navigationStore: store.homeScreen.navigation,
}),
dispatch => ({
indexRouteActionHandler: data => {
dispatch(indexRouteAction(data));
},
}),
),
)(withNavigation(TopTabView));
所以我可以從那里獲取價值,僅此而已。
因此,為了在我首先發布的文件中獲取該存儲的值,我還應該怎么做?
更新:
我正在閱讀有關此內容的信息: https : //redux.js.org/api/store#getState但是我不知道如何使它適應我的代碼,也不知道這是否適合我的情況。 有什么見解嗎?
您將在代碼中的某處創建存儲,如下所示:
const store = createStore( ..reducers);
導出此同伴,導入要訪問商店的位置,然后
store.getState().item // You can access store data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.