redux 是否可以在不连接的情况下分派操作?

2nbm6dog  于 2022-11-12  发布在  其他
关注(0)|答案(4)|浏览(153)
export default class App extends Component {
...
  componentDidMount() {
    //registering event listener
    BackgroundGeolocation.on('location', this.onLocation, this.onError);
  }

  onLocation(location) {
   //wishing to dispatch an action to update variable in store
  }

  render() {
    return (
      <Provider store={store}>
        <AlertProvider>
          <MainNavigator screenProps={{ isConnected: this.state.isConnected }} />
        </AlertProvider>
      </Provider>
    );
  }
}

据我所知,我不可能连接到这个组件中的存储,因为我们只是配置和传递存储到提供者。我怎么可能在我的onLocation事件中调度一个操作?

hiz5n14c

hiz5n14c1#

您可以使用store对象直接调度。

store.dispatch({type:"UPDATE_VARIABLE", payload:variable.value})

如果您在某个其他组件中,而该组件中的存储对象不容易使用,请将其从主组件中导出,并将其导入到需要它的位置,然后使用上面的语句

neekobn8

neekobn82#

react-redux有自己的钩子来调用它们

const dispatch = useDispatch();
const state = useSelector((state) => state);

不要忘记导入它们

import { useDispatch, useSelector } from 'react-redux';

如果您写入useDispatch,则vs程式码会自动完成

kiz8lqtg

kiz8lqtg3#

您可以使用此代码并在类中添加构造函数,如下所示

constructor(props) {
    super(props);
  }

  onLocation() {
    this.props.dispatch({type: GET_THINGS_REQUESTED, payload: value});
  }
bn31dyow

bn31dyow4#

UmiJS 3.x用户可以做的事情:

import { getDvaApp } from 'umi';

const dispatch = getDvaApp()._store.dispatch;

dispatch({ … })

相关问题