2.21.9 • Published 10 months ago

concent v2.21.9

Weekly downloads
776
License
MIT
Repository
github
Last release
10 months ago

English | 简体中文

🐮Introduction

Concent is an amazing state management tool, supported by a healthy middleware ecosystem and excellent devtools. It is a predictable, zero-invasive, progressive, high-performance react development framework!

Concent encourages simplicity. It saves you the hassle of creating boilerplate code and gives powerful tools with a moderate learning curve, suitable for both experienced and inexperienced developers alike.

npm.io

recommend next verion lib: helux

✨Features

💻 Playground

Templates

A best practise project(git) building by concent & typescript.

$ git clone https://github.com/tnfe/concent-pro        (dev with webpack)
$ git clone https://github.com/tnfe/vite-concent-pro   (dev with vite)

Install by npx command

$ npx create-react-app my-app --template concent-ts

or clone its source code by git command

$ git clone https://github.com/concentjs/cra-project-concent-ts

Key features snippet

Online case

👨🏽‍Docs

Visit official website https://concentjs.github.io/concent-doc to learn more.

📦Quick start

Make sure you have installed nodejs

Install

$ npm i --save concent

or yarn command

$ yarn add concent

Minimal example

See how easy it is to use concent to manage react state.

import { run, register, useConcent } from 'concent';

// 1️⃣ Configure models
run({
  counter: {// declare a moudle named 'counter'
    state: { num: 1, numBig: 100 }, // define state
  },
  // you can also put another module here.
});

// 2️⃣  Now the react component can work with concent
@register('counter') // 👈 decorate your component with register
class DemoCls extends React.Component{
  // commit state to store and broadcast to other refs which also belong to counter module
  inc = ()=> this.setState({num: this.state.num + 1})
  render(){
    // here if read num, it means current ins render dep keys is ['num']
    return <button onClick={this.inc}>{this.state.num}</button>
  }
}
function DemoFn(){
  const { state, setState } = useConcent('counter'); // 👈 call useConcent hook in fn component
  const inc = ()=> setState({num: state.num + 1});
  return <button onClick={inc}>{state.num}</button>
}

Complete example

Move logic to reducer and define computed,watch,lifecycle
try edit this demo、 👉better js demo、👉better ts demo

import { run, register, useConcent, defWatch } from 'concent';

run({
  counter: {
    state: { num: 1, numBig: 100 },
    computed: {
      numx2: ({ num }) => num * 2, // only num changed will trigger this fn
      numx2plusBig: ({ numBig }, o, f) => f.cuVal.numx2 + numBig // reuse computed reslult
    },
    reducer: {
      initState: () => ({ num: 8, numBig: 800 }),
      add: (payload, moduleState, actionCtx) => ({ num: moduleState.num + 1 }),
      addBig: (p, m, ac) => ({ numBig: m.numBig + 100 }),
      asyncAdd: async (p, m, ac) => {
        await delay(1000);
        return { num: m.num + 1 };
      },
      addSmallAndBig: async (p, m, ac) => {
        // hate string literal? see https://codesandbox.io/s/combine-reducers-better-7u3t9
        await ac.dispatch("add"); 
        await ac.dispatch("addBig");
      }
    },
    watch: {
      numChange: defWatch(({ num }, o) => console.log(`from ${o.num} to ${num}`), {immediate:true}),
      numChangeWithoutImmediate: ({ num }, o) => console.log(`from ${o.num} to ${num}`),
    },
    lifecycle: {
      // loaded: (dispatch) => dispatch("initState"), // [optional] triggered when module loaded
      // initState: async (moduleState) => {/** async logic */ return{num:666}}, // [optional] allow user load state async
      // initStateDone: (dispatch) => dispatch("addSmallAndBig"), // [optional] call any reducer fn after initState done
      mounted: (dispatch) => dispatch("initState"), // [optional] triggered when the first ins of counter module mounted
      willUnmount: (dispatch) => dispatch("initState") // [optional] triggered when the last ins of counter module unmount
    }
  }
});

@register("counter")
class DemoCls extends React.Component {
  render() {
    // mr is short of moduleReducer, now you can call counter module's all reducer fns by mr
    return <button onClick={this.ctx.mr.add}>{this.state.num}</button>;
  }
}

function DemoFn() {
  const { moduleComputed, mr } = useConcent("counter");
  return <button onClick={mr.add}>numx2plusBig: {moduleComputed.numx2plusBig}</button>;
}

🎲Eco-lib examples

Use with react router

Details see here react-router-concent,expose history,you can call it anywhere in your app to enjoy the imperative navigation jump.

react-router-concent online demo

Use with redux-dev-tool

Details see here concent-plugin-redux-devtool,track your state changing history。 redux-dev-tool

Use with plugin-loading

Details see here concent-plugin-loading,control all your reducer function's loading status easily。

concent-plugin-loading online demo


CDN resource

🐚Who is using it

Communication

QQ-qroup-qr-code

👅License

concent is released under the MIT License. http://www.opensource.org/licenses/mit-license

2.21.9

10 months ago

2.21.8

2 years ago

2.21.0

2 years ago

2.21.2

2 years ago

2.21.1

2 years ago

2.21.7

2 years ago

2.21.4

2 years ago

2.21.3

2 years ago

2.21.6

2 years ago

2.21.5

2 years ago

2.20.2

2 years ago

2.20.3

2 years ago

2.20.0

2 years ago

2.20.1

2 years ago

2.20.6

2 years ago

2.20.7

2 years ago

2.20.4

2 years ago

2.20.5

2 years ago

2.19.8

3 years ago

2.19.9

3 years ago

2.19.13

3 years ago

2.19.14

3 years ago

2.19.15

3 years ago

2.19.10

3 years ago

2.19.11

3 years ago

2.19.12

3 years ago

2.19.6

3 years ago

2.19.7

3 years ago

2.19.4

3 years ago

2.19.5

3 years ago

2.19.2

3 years ago

2.19.3

3 years ago

2.19.1

3 years ago

2.18.5

3 years ago

2.18.6

3 years ago

2.18.3

3 years ago

2.18.4

3 years ago

2.18.1

3 years ago

2.18.2

3 years ago

2.18.0

3 years ago

2.17.6

3 years ago

2.17.7

3 years ago

2.17.4

3 years ago

2.17.5

3 years ago

2.17.2

3 years ago

2.17.3

3 years ago

2.17.1

3 years ago

2.16.12

3 years ago

2.16.11

3 years ago

2.16.10

3 years ago

2.16.9

4 years ago

2.16.8

4 years ago

2.16.7

4 years ago

2.16.5

4 years ago

2.16.6

4 years ago

2.16.4

4 years ago

2.16.3

4 years ago

2.16.2

4 years ago

2.16.1

4 years ago

2.15.16

4 years ago

2.15.15

4 years ago

2.15.14

4 years ago

2.15.13

4 years ago

2.15.11

4 years ago

2.15.12

4 years ago

2.15.10

4 years ago

2.15.9

4 years ago

2.15.8

4 years ago

2.15.6

4 years ago

2.15.7

4 years ago

2.15.4

4 years ago

2.15.5

4 years ago

2.14.25

4 years ago

2.14.26

4 years ago

2.14.23

4 years ago

2.14.24

4 years ago

2.14.22

4 years ago

2.15.2

4 years ago

2.15.3

4 years ago

2.15.1

4 years ago

2.14.21

4 years ago

2.14.20

4 years ago

2.14.18

4 years ago

2.14.19

4 years ago

2.14.17

4 years ago

2.14.16

4 years ago

2.14.15

4 years ago

2.14.14

4 years ago

2.14.13

4 years ago

2.14.12

4 years ago

2.14.11

4 years ago

2.14.10

4 years ago

2.14.9

4 years ago

2.14.8

4 years ago

2.14.7

4 years ago

2.14.6

4 years ago

2.14.5

4 years ago

2.14.4

4 years ago

2.14.3

4 years ago

2.14.2

4 years ago

2.14.1

4 years ago

2.13.10

4 years ago

2.13.9

4 years ago

2.13.8

4 years ago

2.13.7

4 years ago

2.13.6

4 years ago

2.13.4

4 years ago

2.13.5

4 years ago

2.13.3

4 years ago

2.13.2

4 years ago

2.13.1

4 years ago

2.12.9

4 years ago

2.12.8

4 years ago

2.12.7

4 years ago

2.12.6

4 years ago

2.12.5

4 years ago

2.12.4

4 years ago

2.12.3

4 years ago

2.12.2

4 years ago

2.12.1

4 years ago

2.11.16

4 years ago

2.11.15

4 years ago

2.11.14

4 years ago

2.11.12

4 years ago

2.11.13

4 years ago

2.11.11

4 years ago

2.11.10

4 years ago

2.11.9

4 years ago

2.11.8

4 years ago

2.11.7

4 years ago

2.11.6

4 years ago

2.11.5

4 years ago

2.11.4

4 years ago

2.11.0

4 years ago

2.11.1

4 years ago

2.11.2

4 years ago

2.11.3

4 years ago

2.10.13

4 years ago

2.10.10

5 years ago

2.10.11

5 years ago

2.10.12

5 years ago

2.10.9

5 years ago

2.10.8

5 years ago

2.10.7

5 years ago

2.10.6

5 years ago

2.10.5

5 years ago

2.10.4

5 years ago

2.10.3

5 years ago

2.10.2

5 years ago

2.10.1

5 years ago

2.9.38

5 years ago

2.9.37

5 years ago

2.9.36

5 years ago

2.9.35

5 years ago

2.9.34

5 years ago

2.9.33

5 years ago

2.9.32

5 years ago

2.9.31

5 years ago

2.9.30

5 years ago

2.9.29

5 years ago

2.9.28

5 years ago

2.9.27

5 years ago

2.9.26

5 years ago

2.9.25

5 years ago

2.9.24

5 years ago

2.9.23

5 years ago

2.9.22

5 years ago

2.9.21

5 years ago

2.9.20

5 years ago

2.9.19

5 years ago

2.9.18

5 years ago

2.9.17

5 years ago

2.9.16

5 years ago

2.9.15

5 years ago

2.9.12

5 years ago

2.9.13

5 years ago

2.9.10

5 years ago

2.9.11

5 years ago

2.9.14

5 years ago

2.9.9

5 years ago

2.9.8

5 years ago

2.9.7

5 years ago

2.9.6

5 years ago

2.9.5

5 years ago

2.9.4

5 years ago

2.9.2

5 years ago

2.9.1

5 years ago

2.9.3

5 years ago

2.8.18

5 years ago

2.8.17

5 years ago

2.8.16

5 years ago

2.8.15

5 years ago

2.8.14

5 years ago

2.8.12

5 years ago

2.8.11

5 years ago

2.8.10

5 years ago

2.8.13

5 years ago

2.8.5

5 years ago

2.8.7

5 years ago

2.8.6

5 years ago

2.8.9

5 years ago

2.8.8

5 years ago

2.8.4

5 years ago

2.8.1

5 years ago

2.8.3

5 years ago

2.8.2

5 years ago

2.7.28

5 years ago

2.7.27

5 years ago

2.7.26

5 years ago

2.7.25

5 years ago

2.7.24

5 years ago

2.7.22

5 years ago

2.7.23

5 years ago

2.7.21

5 years ago

2.7.19

5 years ago

2.7.20

5 years ago

2.7.18

5 years ago

2.7.17

5 years ago

2.7.16

5 years ago

2.7.15

5 years ago

2.7.14

5 years ago

2.7.13

5 years ago

2.7.12

5 years ago

2.7.11

5 years ago

2.7.10

5 years ago

2.7.9

5 years ago

2.7.8

5 years ago

2.7.7

5 years ago

2.7.6

5 years ago

2.7.5

5 years ago

2.7.4

5 years ago

2.7.3

5 years ago

2.7.2

5 years ago

2.7.1

5 years ago

2.6.5

5 years ago

2.6.4

5 years ago

2.6.1

5 years ago

2.6.3

5 years ago

2.6.2

5 years ago

2.5.14

5 years ago

2.5.15

5 years ago

2.5.16

5 years ago

2.5.12

5 years ago

2.5.13

5 years ago

2.5.11

5 years ago

2.5.10

5 years ago

2.5.9

5 years ago

2.5.8

5 years ago

2.5.7

5 years ago

2.5.6

5 years ago

2.5.5

5 years ago

2.5.4

5 years ago

2.5.3

5 years ago

2.5.2

5 years ago

2.5.1

5 years ago

2.4.22

5 years ago

2.4.21

5 years ago

2.4.20

5 years ago

2.4.19

5 years ago

2.4.18

5 years ago

2.4.17

5 years ago

2.4.16

5 years ago

2.4.14

5 years ago

2.4.15

5 years ago

2.4.13

5 years ago

2.4.10

5 years ago

2.4.12

5 years ago

2.4.11

5 years ago

2.4.9

5 years ago

2.4.8

5 years ago

2.4.7

5 years ago

2.4.6

5 years ago

2.4.5

5 years ago

2.4.4

5 years ago

2.4.3

5 years ago

2.4.2

5 years ago

2.4.1

5 years ago

2.4.0

5 years ago

2.3.28

5 years ago

2.3.27

5 years ago

2.3.26

5 years ago

2.3.25

5 years ago

2.3.24

5 years ago

2.3.23

5 years ago

2.3.22

5 years ago

2.3.21

5 years ago

2.3.20

5 years ago

2.3.19

5 years ago

2.3.18

5 years ago

2.3.17

5 years ago

2.3.16

5 years ago

2.3.13

5 years ago

2.3.12

5 years ago

2.3.15

5 years ago

2.3.14

5 years ago

2.3.11

5 years ago

2.3.10

5 years ago

2.3.9

5 years ago

2.3.8

5 years ago

2.3.4

5 years ago

2.3.3

5 years ago

2.3.6

5 years ago

2.3.5

5 years ago

2.3.7

5 years ago

2.3.0

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.2.7

5 years ago

2.2.8

5 years ago

2.2.6

5 years ago

2.2.5

5 years ago

2.2.4

5 years ago

2.2.3

5 years ago

2.2.2

5 years ago

2.2.1

5 years ago

2.2.0

5 years ago

2.1.6

5 years ago

2.1.5

5 years ago

2.1.4

5 years ago

2.1.3

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.5.181

5 years ago

1.5.180

5 years ago

1.5.179

5 years ago

1.5.178

5 years ago

1.5.177

5 years ago

1.5.176

5 years ago

1.5.175

5 years ago

1.5.174

5 years ago

1.5.173

5 years ago

1.5.172

5 years ago

1.5.171

5 years ago

1.5.170

5 years ago

1.5.169

5 years ago

1.5.168

5 years ago

1.5.167

5 years ago

1.5.166

5 years ago

1.5.165

5 years ago

1.5.164

5 years ago

1.5.163

5 years ago

1.5.162

5 years ago

1.5.161

5 years ago

1.5.160

5 years ago

1.5.159

5 years ago

1.5.158

5 years ago

1.5.157

5 years ago

1.5.156

5 years ago

1.5.155

5 years ago

1.5.154

5 years ago

1.5.153

5 years ago

1.5.152

5 years ago

1.5.151

5 years ago

1.5.150

5 years ago

1.5.149

5 years ago

1.5.148

5 years ago

1.5.147

5 years ago

1.5.146

5 years ago

1.5.145

5 years ago

1.5.144

5 years ago

1.5.143

5 years ago

1.5.142

5 years ago

1.5.141

5 years ago

1.5.140

5 years ago

1.5.139

5 years ago

1.5.138

5 years ago

1.5.137

5 years ago

1.5.136

5 years ago

1.5.135

5 years ago

1.5.134

5 years ago

1.5.133

5 years ago

1.5.132

5 years ago

1.5.131

5 years ago

1.5.130

5 years ago

1.5.126

5 years ago

1.5.129

5 years ago

1.5.128

5 years ago

1.5.127

5 years ago

1.5.125

5 years ago

1.5.124

5 years ago

1.5.123

5 years ago

1.5.122

5 years ago

1.5.121

5 years ago

1.5.119

5 years ago

1.5.120

5 years ago

1.5.118

5 years ago

1.5.117

5 years ago

1.5.116

5 years ago

1.5.115

5 years ago

1.5.114

5 years ago

1.5.113

5 years ago

1.5.112

5 years ago

1.5.111

5 years ago

1.5.110

5 years ago

1.5.109

5 years ago

1.5.108

5 years ago

1.5.107

5 years ago

1.5.106

5 years ago

1.5.105

5 years ago

1.5.104

5 years ago

1.5.103

5 years ago

1.5.102

5 years ago

1.5.101

5 years ago

1.5.100

5 years ago

1.5.99

5 years ago

1.5.98

5 years ago

1.5.97

5 years ago

1.5.96

5 years ago

1.5.95

5 years ago

1.5.94

5 years ago

1.5.93

5 years ago

1.5.92

5 years ago

1.5.91

5 years ago

1.5.90

5 years ago

1.5.89

6 years ago

1.5.87

6 years ago

1.5.88

6 years ago

1.5.85

6 years ago

1.5.84

6 years ago

1.5.86

6 years ago

1.5.83

6 years ago

1.5.81

6 years ago

1.5.79

6 years ago

1.5.80

6 years ago

1.5.78

6 years ago

1.5.77

6 years ago

1.5.76

6 years ago

1.5.74

6 years ago

1.5.73

6 years ago

1.5.75

6 years ago

1.5.70

6 years ago

1.5.72

6 years ago

1.5.69

6 years ago

1.5.65

6 years ago

1.5.67

6 years ago

1.5.66

6 years ago

1.5.68

6 years ago

1.5.64

6 years ago

1.5.63

6 years ago

1.5.62

6 years ago

1.5.61

6 years ago

1.5.60

6 years ago

1.5.59

6 years ago

1.5.58

6 years ago

1.5.56

6 years ago

1.5.55

6 years ago

1.5.54

6 years ago

1.5.53

6 years ago

1.5.52

6 years ago

1.5.51

6 years ago

1.5.50

6 years ago

1.5.49

6 years ago

1.5.47

6 years ago

1.5.48

6 years ago

1.5.46

6 years ago

1.5.45

6 years ago

1.5.44

6 years ago

1.5.43

6 years ago

1.5.42

6 years ago

1.5.41

6 years ago

1.5.40

6 years ago

1.5.39

6 years ago

1.5.38

6 years ago

1.5.37

6 years ago

1.5.36

6 years ago

1.5.35

6 years ago

1.5.34

6 years ago

1.5.33

6 years ago

1.5.32

6 years ago

1.5.31

6 years ago

1.5.30

6 years ago

1.5.29

6 years ago

1.5.28

6 years ago

1.5.27

6 years ago

1.5.26

6 years ago

1.5.25

6 years ago

1.5.24

6 years ago

1.5.23

6 years ago

1.5.22

6 years ago

1.5.21

6 years ago

1.5.20

6 years ago

1.5.19

6 years ago

1.5.18

6 years ago

1.5.17

6 years ago

1.5.16

6 years ago

1.5.15

6 years ago

1.5.14

6 years ago

1.5.13

6 years ago

1.5.12

6 years ago

1.5.11

6 years ago

1.5.10

6 years ago

1.5.9

6 years ago

1.5.8

6 years ago

1.5.7

6 years ago

1.5.6

6 years ago

1.5.5

6 years ago

1.5.4

6 years ago

1.5.3

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.4.31

6 years ago

1.4.30

6 years ago

1.4.29

6 years ago

1.4.28

6 years ago

1.4.27

6 years ago

1.4.26

6 years ago

1.4.25

6 years ago

1.4.24

6 years ago

1.4.23

6 years ago

1.4.22

6 years ago

1.4.21

6 years ago

1.4.20

6 years ago

1.4.19

6 years ago

1.4.18

6 years ago

1.4.17

6 years ago

1.4.16

6 years ago

1.4.15

6 years ago

1.4.14

6 years ago

1.4.13

6 years ago

1.4.12

6 years ago

1.4.11

6 years ago

1.4.10

6 years ago

1.4.9

6 years ago

1.4.8

6 years ago

1.4.7

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.11

6 years ago

1.3.10

6 years ago

1.3.9

6 years ago

1.3.8

6 years ago

1.3.7

6 years ago

1.3.6

6 years ago

1.3.5

6 years ago

1.3.4

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.38

6 years ago

1.2.37

6 years ago

1.2.35

6 years ago

1.2.34

6 years ago

1.2.33

6 years ago

1.2.32

6 years ago

1.2.31

6 years ago

1.2.30

6 years ago

1.2.29

6 years ago

1.2.28

6 years ago

1.2.27

6 years ago

1.2.26

6 years ago

1.2.25

6 years ago

1.2.24

6 years ago

1.2.23

6 years ago

1.2.22

6 years ago

1.2.21

6 years ago

1.2.20

6 years ago

1.2.19

6 years ago

1.2.18

6 years ago

1.2.17

6 years ago

1.2.16

6 years ago

1.2.15

6 years ago

1.2.14

6 years ago

1.2.13

6 years ago

1.2.12

6 years ago

1.2.11

6 years ago

1.2.10

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.102

6 years ago

1.1.101

6 years ago

1.1.100

6 years ago

1.1.99

6 years ago

1.1.98

6 years ago

1.1.97

6 years ago

1.1.96

6 years ago

1.1.95

6 years ago

1.1.94

6 years ago

1.1.93

6 years ago

1.1.92

6 years ago

1.1.91

6 years ago

1.1.90

6 years ago

1.1.89

6 years ago

1.1.88

6 years ago

1.1.87

6 years ago

1.1.86

6 years ago

1.1.85

6 years ago

1.1.84

6 years ago

1.1.83

6 years ago

1.1.82

6 years ago

1.1.81

6 years ago