web-dev-qa-db-ja.com

接続せずにアクションをディスパッチすることは可能ですか?

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イベントでアクションをディスパッチするにはどうすればよいですか?

7
Isaac

ストアオブジェクトを使用して直接ディスパッチできます。

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

ストアオブジェクトがすぐに利用できない他のコンポーネントにいる場合は、メインコンポーネントからエクスポートし、必要な場所にインポートして、上記のステートメントを使用します。

18
Rohith Murali

このコードを使用して、このようなクラスにコンストラクタを追加できます

  constructor(props) {
    super(props);
  }

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