위챗 애플릿에서 Redux 사용하기
Miniprogram bindings for Redux
작은 프로그램 개발도 때때로 복잡한 업무 장면을 만나게 된다. 예를 들어 크로스 페이지의 데이터 전달, 비부자 구성 요소의 데이터 동기화, 여러 자손 구성 요소의 데이터 복용 등이다. 이때 글로벌 데이터나 trigger Event/select Component는 지원을 잘 제공하지 못한다. 반면에 업무 논리 코드와 템플릿 코드는 읽기와 유지보수가 어려울 정도로 빠르게 팽창할 수 있다.추적하기 어려운 버그 위험도 발생하기 쉽다.
redux는react 프로젝트에 널리 응용되고 있는 상태 관리 방안으로서 이러한 문제를 해결하는 데 도움을 줄 수 있습니다.이것이 바로 mp-redux의 출처입니다. 추가 이해나 학습 비용을 낮추기 위해 사용 방식과 API는react-redux와 가능한 한 일치합니다.
Github Repo: github.com/acurseJ/mp-…
사용 1.redux를 도입합니다. 비동기적이거나 다른side effect를 처리해야 한다면,thunk,saga 또는 그 어떠한 중간부품을 인용할 수 있습니다. 이전에redux를 사용한 웹 프로젝트와 다를 것이 없습니다.
첨부: redux repo github.com/reduxjs/red…
2. mp-redux dist 디렉토리에 있는 mp-redux.js 파일을 복사하면 mp-redux는 세 개의 API를 제공합니다.
Provider
Application Store 도입
// app.js
import { createStore } from './lib/redux'
import rootReducer from './reducer/index'
import getInitialState from './getInitialState'
import { Provider } from './lib/mp-redux'
App(
Provider(createStore(rootReducer, getInitialState()))({
// ...app config
})
)
connect
바인딩 애플릿 페이지
import { add } from './actions'
import { connect } from '../lib/mp-redux'
const mapStateToProps = state => ({
num: state.num
})
const mapDispatchToProps = {
add
}
Page(
connect(mapStateToProps,mapDispatchToProps)({
// ...page config
customClick() {
this.add(1)
}
})
)
connectComponent
귀속 애플릿 사용자 정의 구성 요소, 사용법은connect와 비슷합니다. 귀속 페이지에 사용되고, 귀속 구성 요소에 사용됩니다.
import { minus } from './actions'
import { connectComponent } from '../../lib/mp-redux'
const mapStateToProps = state => ({
num: state.num
})
const mapDispatchToProps = {
minus
}
Component(
connectComponent(mapStateToProps,mapDispatchToProps)({
// ...component config
methods: {
customClick() {
this.minus(2)
}
}
})
)
사용자 정의 감청 watch
react를 사용하는 프로젝트에 대해 우리는 렌더링 함수에서 구성 요소가 수신한 props, 예를 들어 텍스트 변환, 데이터 포맷 등을 자체적으로 처리할 수 있다. 그러나 작은 프로그램에서 논리층과 시각층이 분리되고 클래스 컴퓨터의 계산 속성 API를 제공하지 않기 때문에 setData 이전에 사용자 정의 처리가 변경된 데이터를 처리하는 것은 의심할 여지없이 번거로운 일이다. mp-redux는watch를 제공했다.state 지정 필드의 변경을 감청하고 setData 권한을 개발자에게 돌려주는 데 도움을 줄 수 있습니다.
const mapStateToProps = state => ({
num: state.num
})
Component(
connectComponent(mapStateToProps)({
// ...component config
watch: {
num(newVal, oldVal){ // maped state , num ,
this.setData({ // , setData ,
num: newVal * 10
})
}
}
})
)
링크 주소
프로젝트 주소: mp-redux
애플릿 샘플 코드: mp-redux demo
전재 대상:https://juejin.im/post/5be7e107e51d45092866e5bc
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.