Create Redux store

This widget demonstrates how to provide your own Redux store,action, and reducer to share state between widgets.

How to use the sample

Clone the sample repo and copy this widget's folder (within widgets) to the client/your-extensions/widgets folder of your Experience Builder installation.

How it works

Create an extension class to implement the ReduxStoreExtension interface in the my-store.ts file.

import { extensionSpec, ImmutableObject, IMState } from 'jimu-core';

export default class MyReduxStoreExtension implements extensionSpec.ReduxStoreExtension {
  id = 'my-local-redux-store-extension';
  // Returns your redux actions
  getActions() {
    return Object.keys(MyActionKeys).map(k => MyActionKeys[k]);
  }
  //This returns the local state
  getInitLocalState() {
    return {
      a: null,
      b: null
    }
  }
  //This is the reducer and specifies how the application state changes in response to the actions.
  getReducer() {
    return (localState: IMMyState, action: ActionTypes, appState: IMState): IMMyState => {
      switch (action.type) {
        case MyActionKeys.MyAction1:
          return localState.set('a', action.val);
        case MyActionKeys.MyAction2:
          return localState.set('b', action.val);
        default:
          return localState;
      }
    }
  }
  //Return the local key for myState
  getStoreKey() {
    return 'myState';
  }
}

In the manifest.json there is an extensions property that provides the location and information for the redux store extension.

 "extensions": [
    {
      "name": "My store",
      "point": "REDUX_STORE",
      "uri": "extensions/my-store"
    }
  ],

In the widget.tsx the onChange function dispatches the action type based on the change in the value.

onChange = (evt) => {
    this.props.dispatch({
      type: 'MY_ACTION_1',
      val: evt.target.value
    });
  }

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.

You can no longer sign into this site. Go to your ArcGIS portal or the ArcGIS Location Platform dashboard to perform management tasks.

Your ArcGIS portal

Create, manage, and access API keys and OAuth 2.0 developer credentials, hosted layers, and data services.

Your ArcGIS Location Platform dashboard

Manage billing, monitor service usage, and access additional resources.

Learn more about these changes in the What's new in Esri Developers June 2024 blog post.

Close