react-native - 导入创建的 redux 存储以从非连接组件调度操作
问题描述
我正在使用 react-native 和 redux。我也在使用反应导航,我有一个底部选项卡导航器,其中第二个 RouteConfig 导航选项为 tabBarOnPress 提供了一个功能。我想在这个回调中向 redux 发送一些操作。
import store from "./Store"
const BottomTab = createBottomTabNavigator(
{
First: FirstScreen,
Second: {
screen: SecondScreen,
navigationOptions: {
tabBarOnPress: ({ navigation }: any) => {
store.dispatch(someAction())
navigation.navigate("SecondScreenModal");
}
}
},
Third: ThirdScreen
},
{
navigationOptions: ({ navigation }) => ({
//..
}
);
由于我找不到连接底部选项卡导航器的方法,我想知道在这种情况下直接导入创建的 redux 存储是否是不好的做法(与我作为道具传递给提供者的相同)。
import rootReducer from "./RootReducer";
import {createStore} from "redux";
store = createStore(rootReducer)
export default store
解决方案
在您希望调度 redux 操作的屏幕内(在您的情况下为 SecondScreen),设置导航参数等于您要执行的功能。您可以为参数命名任何名称,但我通常根据我将如何使用它来命名它。
componentDidMount = () => {
this.props.navigation.setParams({ tabBarOnPress: this.props.myReduxActionCreator })
}
然后在您的屏幕导航选项中,您可以执行类似的操作来访问该功能。确保它与上面的参数名称相同,所以在这个例子中,'tabBarOnPress'
const BottomTab = createBottomTabNavigator(
{
First: FirstScreen,
Second: {
screen: SecondScreen,
navigationOptions: {
// Access the function inside navigation params here
tabBarOnPress: ({navigation}) => navigation.getParam('tabBarOnPress', null)
}
},
Third: ThirdScreen
},
{
navigationOptions: ({navigation}) => ({})
}
)
推荐阅读
- reactjs - onChange 反应事件在 ios 设备上无法按预期工作(使用 Cordova 包装器的混合应用程序)
- javascript - 监听VueJS父组件中的事件调用方法
- scala - Spark 函数 avg 和 BigDecimal 的比例问题
- r - 在 R studio 中将 tmap 与闪亮相结合
- java - 如何用特定的字符串填充 JList?
- xcode - dylib:库未加载:原因:在 swift 5 中找不到图像
- transactions - Firebird 只读事务
- javascript - ExtJS 屏幕阅读器无法读取鼠标悬停时的 X 按钮
- c# - 无法理解的 WinRT 错误
- meld - Meld 工具中的“输入”符号是什么意思