2.21.8 • Published 12 months ago

concent v2.21.8

Weekly downloads
776
License
MIT
Repository
github
Last release
12 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

✨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.8

12 months ago

2.21.0

1 year ago

2.21.2

1 year ago

2.21.1

1 year ago

2.21.7

1 year ago

2.21.4

1 year ago

2.21.3

1 year ago

2.21.6

1 year ago

2.21.5

1 year ago

2.20.2

1 year ago

2.20.3

1 year ago

2.20.0

1 year ago

2.20.1

1 year ago

2.20.6

1 year ago

2.20.7

1 year ago

2.20.4

1 year ago

2.20.5

1 year ago

2.19.8

2 years ago

2.19.9

2 years ago

2.19.13

1 year ago

2.19.14

1 year ago

2.19.15

1 year ago

2.19.10

2 years ago

2.19.11

2 years ago

2.19.12

2 years ago

2.19.6

2 years ago

2.19.7

2 years ago

2.19.4

2 years ago

2.19.5

2 years ago

2.19.2

2 years ago

2.19.3

2 years ago

2.19.1

2 years ago

2.18.5

2 years ago

2.18.6

2 years ago

2.18.3

2 years ago

2.18.4

2 years ago

2.18.1

2 years ago

2.18.2

2 years ago

2.18.0

2 years ago

2.17.6

2 years ago

2.17.7

2 years ago

2.17.4

2 years ago

2.17.5

2 years ago

2.17.2

2 years ago

2.17.3

2 years ago

2.17.1

2 years ago

2.16.12

2 years ago

2.16.11

2 years ago

2.16.10

2 years ago

2.16.9

2 years ago

2.16.8

2 years ago

2.16.7

2 years ago

2.16.5

3 years ago

2.16.6

2 years ago

2.16.4

3 years ago

2.16.3

3 years ago

2.16.2

3 years ago

2.16.1

3 years ago

2.15.16

3 years ago

2.15.15

3 years ago

2.15.14

3 years ago

2.15.13

3 years ago

2.15.11

3 years ago

2.15.12

3 years ago

2.15.10

3 years ago

2.15.9

3 years ago

2.15.8

3 years ago

2.15.6

3 years ago

2.15.7

3 years ago

2.15.4

3 years ago

2.15.5

3 years ago

2.14.25

3 years ago

2.14.26

3 years ago

2.14.23

3 years ago

2.14.24

3 years ago

2.14.22

3 years ago

2.15.2

3 years ago

2.15.3

3 years ago

2.15.1

3 years ago

2.14.21

3 years ago

2.14.20

3 years ago

2.14.18

3 years ago

2.14.19

3 years ago

2.14.17

3 years ago

2.14.16

3 years ago

2.14.15

3 years ago

2.14.14

3 years ago

2.14.13

3 years ago

2.14.12

3 years ago

2.14.11

3 years ago

2.14.10

3 years ago

2.14.9

3 years ago

2.14.8

3 years ago

2.14.7

3 years ago

2.14.6

3 years ago

2.14.5

3 years ago

2.14.4

3 years ago

2.14.3

3 years ago

2.14.2

3 years ago

2.14.1

3 years ago

2.13.10

3 years ago

2.13.9

3 years ago

2.13.8

3 years ago

2.13.7

3 years ago

2.13.6

3 years ago

2.13.4

3 years ago

2.13.5

3 years ago

2.13.3

3 years ago

2.13.2

3 years ago

2.13.1

3 years ago

2.12.9

3 years ago

2.12.8

3 years ago

2.12.7

3 years ago

2.12.6

3 years ago

2.12.5

3 years ago

2.12.4

3 years ago

2.12.3

3 years ago

2.12.2

3 years ago

2.12.1

3 years ago

2.11.16

3 years ago

2.11.15

3 years ago

2.11.14

3 years ago

2.11.12

3 years ago

2.11.13

3 years ago

2.11.11

3 years ago

2.11.10

3 years ago

2.11.9

3 years ago

2.11.8

3 years ago

2.11.7

3 years ago

2.11.6

3 years ago

2.11.5

3 years ago

2.11.4

3 years ago

2.11.0

3 years ago

2.11.1

3 years ago

2.11.2

3 years ago

2.11.3

3 years ago

2.10.13

3 years ago

2.10.10

3 years ago

2.10.11

3 years ago

2.10.12

3 years ago

2.10.9

3 years ago

2.10.8

3 years ago

2.10.7

3 years ago

2.10.6

3 years ago

2.10.5

3 years ago

2.10.4

3 years ago

2.10.3

3 years ago

2.10.2

3 years ago

2.10.1

3 years ago

2.9.38

3 years ago

2.9.37

4 years ago

2.9.36

4 years ago

2.9.35

4 years ago

2.9.34

4 years ago

2.9.33

4 years ago

2.9.32

4 years ago

2.9.31

4 years ago

2.9.30

4 years ago

2.9.29

4 years ago

2.9.28

4 years ago

2.9.27

4 years ago

2.9.26

4 years ago

2.9.25

4 years ago

2.9.24

4 years ago

2.9.23

4 years ago

2.9.22

4 years ago

2.9.21

4 years ago

2.9.20

4 years ago

2.9.19

4 years ago

2.9.18

4 years ago

2.9.17

4 years ago

2.9.16

4 years ago

2.9.15

4 years ago

2.9.12

4 years ago

2.9.13

4 years ago

2.9.10

4 years ago

2.9.11

4 years ago

2.9.14

4 years ago

2.9.9

4 years ago

2.9.8

4 years ago

2.9.7

4 years ago

2.9.6

4 years ago

2.9.5

4 years ago

2.9.4

4 years ago

2.9.2

4 years ago

2.9.1

4 years ago

2.9.3

4 years ago

2.8.18

4 years ago

2.8.17

4 years ago

2.8.16

4 years ago

2.8.15

4 years ago

2.8.14

4 years ago

2.8.12

4 years ago

2.8.11

4 years ago

2.8.10

4 years ago

2.8.13

4 years ago

2.8.5

4 years ago

2.8.7

4 years ago

2.8.6

4 years ago

2.8.9

4 years ago

2.8.8

4 years ago

2.8.4

4 years ago

2.8.1

4 years ago

2.8.3

4 years ago

2.8.2

4 years ago

2.7.28

4 years ago

2.7.27

4 years ago

2.7.26

4 years ago

2.7.25

4 years ago

2.7.24

4 years ago

2.7.22

4 years ago

2.7.23

4 years ago

2.7.21

4 years ago

2.7.19

4 years ago

2.7.20

4 years ago

2.7.18

4 years ago

2.7.17

4 years ago

2.7.16

4 years ago

2.7.15

4 years ago

2.7.14

4 years ago

2.7.13

4 years ago

2.7.12

4 years ago

2.7.11

4 years ago

2.7.10

4 years ago

2.7.9

4 years ago

2.7.8

4 years ago

2.7.7

4 years ago

2.7.6

4 years ago

2.7.5

4 years ago

2.7.4

4 years ago

2.7.3

4 years ago

2.7.2

4 years ago

2.7.1

4 years ago

2.6.5

4 years ago

2.6.4

4 years ago

2.6.1

4 years ago

2.6.3

4 years ago

2.6.2

4 years ago

2.5.14

4 years ago

2.5.15

4 years ago

2.5.16

4 years ago

2.5.12

4 years ago

2.5.13

4 years ago

2.5.11

4 years ago

2.5.10

4 years ago

2.5.9

4 years ago

2.5.8

4 years ago

2.5.7

4 years ago

2.5.6

4 years ago

2.5.5

4 years ago

2.5.4

4 years ago

2.5.3

4 years ago

2.5.2

4 years ago

2.5.1

4 years ago

2.4.22

4 years ago

2.4.21

4 years ago

2.4.20

4 years ago

2.4.19

4 years ago

2.4.18

4 years ago

2.4.17

4 years ago

2.4.16

4 years ago

2.4.14

4 years ago

2.4.15

4 years ago

2.4.13

4 years ago

2.4.10

4 years ago

2.4.12

4 years ago

2.4.11

4 years ago

2.4.9

4 years ago

2.4.8

4 years ago

2.4.7

4 years ago

2.4.6

4 years ago

2.4.5

4 years ago

2.4.4

4 years ago

2.4.3

4 years ago

2.4.2

4 years ago

2.4.1

4 years ago

2.4.0

4 years ago

2.3.28

4 years ago

2.3.27

4 years ago

2.3.26

4 years ago

2.3.25

4 years ago

2.3.24

4 years ago

2.3.23

4 years ago

2.3.22

4 years ago

2.3.21

4 years ago

2.3.20

4 years ago

2.3.19

4 years ago

2.3.18

4 years ago

2.3.17

4 years ago

2.3.16

4 years ago

2.3.13

4 years ago

2.3.12

4 years ago

2.3.15

4 years ago

2.3.14

4 years ago

2.3.11

4 years ago

2.3.10

4 years ago

2.3.9

4 years ago

2.3.8

4 years ago

2.3.4

4 years ago

2.3.3

4 years ago

2.3.6

4 years ago

2.3.5

4 years ago

2.3.7

4 years ago

2.3.0

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

2.2.7

4 years ago

2.2.8

4 years ago

2.2.6

4 years ago

2.2.5

4 years ago

2.2.4

4 years ago

2.2.3

4 years ago

2.2.2

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.1.6

4 years ago

2.1.5

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.5.181

4 years ago

1.5.180

4 years ago

1.5.179

4 years ago

1.5.178

4 years ago

1.5.177

4 years ago

1.5.176

4 years ago

1.5.175

4 years ago

1.5.174

4 years ago

1.5.173

4 years ago

1.5.172

4 years ago

1.5.171

4 years ago

1.5.170

4 years ago

1.5.169

4 years ago

1.5.168

4 years ago

1.5.167

4 years ago

1.5.166

4 years ago

1.5.165

4 years ago

1.5.164

4 years ago

1.5.163

4 years ago

1.5.162

4 years ago

1.5.161

4 years ago

1.5.160

4 years ago

1.5.159

4 years ago

1.5.158

4 years ago

1.5.157

4 years ago

1.5.156

4 years ago

1.5.155

4 years ago

1.5.154

4 years ago

1.5.153

4 years ago

1.5.152

4 years ago

1.5.151

4 years ago

1.5.150

4 years ago

1.5.149

4 years ago

1.5.148

4 years ago

1.5.147

4 years ago

1.5.146

4 years ago

1.5.145

4 years ago

1.5.144

4 years ago

1.5.143

4 years ago

1.5.142

4 years ago

1.5.141

4 years ago

1.5.140

4 years ago

1.5.139

4 years ago

1.5.138

4 years ago

1.5.137

4 years ago

1.5.136

4 years ago

1.5.135

4 years ago

1.5.134

4 years ago

1.5.133

4 years ago

1.5.132

4 years ago

1.5.131

4 years ago

1.5.130

4 years ago

1.5.126

4 years ago

1.5.129

4 years ago

1.5.128

4 years ago

1.5.127

4 years ago

1.5.125

4 years ago

1.5.124

4 years ago

1.5.123

4 years ago

1.5.122

4 years ago

1.5.121

4 years ago

1.5.119

4 years ago

1.5.120

4 years ago

1.5.118

4 years ago

1.5.117

4 years ago

1.5.116

4 years ago

1.5.115

4 years ago

1.5.114

4 years ago

1.5.113

4 years ago

1.5.112

4 years ago

1.5.111

4 years ago

1.5.110

4 years ago

1.5.109

4 years ago

1.5.108

4 years ago

1.5.107

4 years ago

1.5.106

4 years ago

1.5.105

4 years ago

1.5.104

4 years ago

1.5.103

4 years ago

1.5.102

4 years ago

1.5.101

4 years ago

1.5.100

4 years ago

1.5.99

4 years ago

1.5.98

4 years ago

1.5.97

4 years ago

1.5.96

4 years ago

1.5.95

4 years ago

1.5.94

4 years ago

1.5.93

4 years ago

1.5.92

4 years ago

1.5.91

4 years ago

1.5.90

4 years ago

1.5.89

4 years ago

1.5.87

4 years ago

1.5.88

4 years ago

1.5.85

4 years ago

1.5.84

4 years ago

1.5.86

4 years ago

1.5.83

4 years ago

1.5.81

4 years ago

1.5.79

4 years ago

1.5.80

4 years ago

1.5.78

4 years ago

1.5.77

4 years ago

1.5.76

4 years ago

1.5.74

4 years ago

1.5.73

4 years ago

1.5.75

4 years ago

1.5.70

4 years ago

1.5.72

4 years ago

1.5.69

4 years ago

1.5.65

4 years ago

1.5.67

4 years ago

1.5.66

4 years ago

1.5.68

4 years ago

1.5.64

4 years ago

1.5.63

4 years ago

1.5.62

4 years ago

1.5.61

4 years ago

1.5.60

4 years ago

1.5.59

4 years ago

1.5.58

4 years ago

1.5.56

4 years ago

1.5.55

4 years ago

1.5.54

4 years ago

1.5.53

4 years ago

1.5.52

4 years ago

1.5.51

4 years ago

1.5.50

4 years ago

1.5.49

4 years ago

1.5.47

4 years ago

1.5.48

4 years ago

1.5.46

4 years ago

1.5.45

4 years ago

1.5.44

4 years ago

1.5.43

4 years ago

1.5.42

4 years ago

1.5.41

4 years ago

1.5.40

4 years ago

1.5.39

4 years ago

1.5.38

4 years ago

1.5.37

4 years ago

1.5.36

5 years ago

1.5.35

5 years ago

1.5.34

5 years ago

1.5.33

5 years ago

1.5.32

5 years ago

1.5.31

5 years ago

1.5.30

5 years ago

1.5.29

5 years ago

1.5.28

5 years ago

1.5.27

5 years ago

1.5.26

5 years ago

1.5.25

5 years ago

1.5.24

5 years ago

1.5.23

5 years ago

1.5.22

5 years ago

1.5.21

5 years ago

1.5.20

5 years ago

1.5.19

5 years ago

1.5.18

5 years ago

1.5.17

5 years ago

1.5.16

5 years ago

1.5.15

5 years ago

1.5.14

5 years ago

1.5.13

5 years ago

1.5.12

5 years ago

1.5.11

5 years ago

1.5.10

5 years ago

1.5.9

5 years ago

1.5.8

5 years ago

1.5.7

5 years ago

1.5.6

5 years ago

1.5.5

5 years ago

1.5.4

5 years ago

1.5.3

5 years ago

1.5.2

5 years ago

1.5.1

5 years ago

1.4.31

5 years ago

1.4.30

5 years ago

1.4.29

5 years ago

1.4.28

5 years ago

1.4.27

5 years ago

1.4.26

5 years ago

1.4.25

5 years ago

1.4.24

5 years ago

1.4.23

5 years ago

1.4.22

5 years ago

1.4.21

5 years ago

1.4.20

5 years ago

1.4.19

5 years ago

1.4.18

5 years ago

1.4.17

5 years ago

1.4.16

5 years ago

1.4.15

5 years ago

1.4.14

5 years ago

1.4.13

5 years ago

1.4.12

5 years ago

1.4.11

5 years ago

1.4.10

5 years ago

1.4.9

5 years ago

1.4.8

5 years ago

1.4.7

5 years ago

1.4.6

5 years ago

1.4.5

5 years ago

1.4.3

5 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.11

5 years ago

1.3.10

5 years ago

1.3.9

5 years ago

1.3.8

5 years ago

1.3.7

5 years ago

1.3.6

5 years ago

1.3.5

5 years ago

1.3.4

5 years ago

1.3.3

5 years ago

1.3.2

5 years ago

1.3.1

5 years ago

1.3.0

5 years ago

1.2.38

5 years ago

1.2.37

5 years ago

1.2.35

5 years ago

1.2.34

5 years ago

1.2.33

5 years ago

1.2.32

5 years ago

1.2.31

5 years ago

1.2.30

5 years ago

1.2.29

5 years ago

1.2.28

5 years ago

1.2.27

5 years ago

1.2.26

5 years ago

1.2.25

5 years ago

1.2.24

5 years ago

1.2.23

5 years ago

1.2.22

5 years ago

1.2.21

5 years ago

1.2.20

5 years ago

1.2.19

5 years ago

1.2.18

5 years ago

1.2.17

5 years ago

1.2.16

5 years ago

1.2.15

5 years ago

1.2.14

5 years ago

1.2.13

5 years ago

1.2.12

5 years ago

1.2.11

5 years ago

1.2.10

5 years ago

1.2.9

5 years ago

1.2.8

5 years ago

1.2.7

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.102

5 years ago

1.1.101

5 years ago

1.1.100

5 years ago

1.1.99

5 years ago

1.1.98

5 years ago

1.1.97

5 years ago

1.1.96

5 years ago

1.1.95

5 years ago

1.1.94

5 years ago

1.1.93

5 years ago

1.1.92

5 years ago

1.1.91

5 years ago

1.1.90

5 years ago

1.1.89

5 years ago

1.1.88

5 years ago

1.1.87

5 years ago

1.1.86

5 years ago

1.1.85

5 years ago

1.1.84

5 years ago

1.1.83

5 years ago

1.1.82

5 years ago

1.1.81

5 years ago