项目作者: benhurott

项目描述 :
Generate a useState, but for global variables.
高级语言: JavaScript
项目地址: git://github.com/benhurott/react-create-global-state.git
创建时间: 2019-03-19T01:36:06Z
项目社区:https://github.com/benhurott/react-create-global-state

开源协议:MIT License

下载


react-create-global-state

Generate a useState, but for global variables.

Usage

1 - Create your custom hook

  1. /**
  2. * useGlobalCounter.js
  3. */
  4. import createGlobalState from 'react-create-global-state'
  5. // create the global for your hook
  6. const initialState = 0
  7. const [useGlobalCounter, Provider] = createGlobalState(initialState)
  8. // export the provider to link in the application
  9. export const GlobalCounterProvider = Provider
  10. // export the hook
  11. export default useGlobalCounter

2 - Link the provider in your application

  1. import React, { Component } from 'react';
  2. // import the provider from your global var
  3. import { GlobalCounterProvider } from './useGlobalCounter'
  4. class App extends Component {
  5. render() {
  6. return (
  7. // add the provider.
  8. <GlobalCounterProvider>
  9. <div>
  10. {/*...*/}
  11. </div>
  12. </GlobalCounterProvider>
  13. );
  14. }
  15. }
  16. export default App

3 - Use the hook

  1. /**
  2. * Counter.js
  3. */
  4. import React from 'react'
  5. import useGlobalCounter from './useGlobalCounter'
  6. export default function Counter(props) {
  7. const [state, setState] = useGlobalCounter()
  8. return (
  9. <div>
  10. <p>State: {state}</p>
  11. <button onClick={() => setState(state + 1)}>+1</button>
  12. <button onClick={() => setState(state - 1)}>-1</button>
  13. </div>
  14. )
  15. }
  1. /**
  2. * App.js
  3. */
  4. import React, { Component } from 'react';
  5. import { GlobalCounterProvider } from './useGlobalCounter'
  6. import Counter from './Counter'
  7. class App extends Component {
  8. render() {
  9. return (
  10. <GlobalCounterProvider>
  11. <div style={{ margin: '20px' }}>
  12. <Counter ></Counter>
  13. <Counter ></Counter>
  14. </div>
  15. </GlobalCounterProvider>
  16. );
  17. }
  18. }
  19. export default App

Result:

result-image

Sample

You can check the sample code HERE