Redux 101
레드ux란 무엇인가?
Redux는 클라이언트, 서버 및 네이티브 환경에 걸쳐 일관되게 실행되고 테스트가 용이한 JavaScript 응용 프로그램을 작성할 수 있도록 설계된 예측 가능한 상태 관리 라이브러리입니다.
왜 Redux를 고려해야 합니까?
Redux 공식 파일에 따르면:
"Redux helps you manage "global" state - state that is needed across many parts of your application.
The patterns and tools provided by Redux make it easier to understand when, where, why, and how the state in your application is being updated, and how your application logic will behave when those changes occur. Redux guides you towards writing code that is predictable and testable, which helps give you confidence that your application will work as expected."
Redux가 해결하려는 문제는 무엇입니까?
Redux가 해결하고자 하는 문제는 예측할 수 있는 상태 갱신이다. 상태가 어디에 있는지, 왜 바뀌었는지 알고'단일한 진실의 출처'를 가지는 것이 장점일 수 있기 때문이다.
Redux는 프로그램을 쉽게 디버깅할 수 있습니다. 어떻게 디버깅합니까?
UI 레이어를 데이터와 분리하여 언제든지 애플리케이션 작동을 파악할 수 있습니다.
Redux의 주요 원칙은 무엇입니까?
Redux 설계 이면의 의도는 다음과 같은 세 가지 핵심 개념으로 요약할 수 있습니다.
1. 진실의 단일한 출처
애플리케이션(데이터, 사용자 인터페이스) 상태에서 변경된 모든 내용이 단일 객체에 포함됩니다(*상태 트리/스토리지*)
상점의 초기 상태는 사용자가 결정하지만, 이것은 보통 하나의 대상입니다. 예를 들어 하나의 모델입니다. setter가 초기 설정을 할 필요가 없습니다.
스토어:
응용 프로그램 전체 상태 트리를 저장하는 객체에는 몇 가지 방법이 있습니다.
getState()
dispatch(action)
subscribe(listener)
replaceReducer(nextReducer)
어떻게 Redux 응용 상점을 만듭니까?
다음과 같이 root reducer 함수를 createStore에 전달합니다.
const userReducer = function(state = [], action) {
if (action.type === 'ADD_USER') {
var newState = state.concat([action.user]);
return newState;
}
return state;
}
const store = createStore(users, ['Use Redux'])
store.dispatch({
type: 'ADD_USER',
user: {name: 'Rawan', language: 'EN'}
})
createStore(reducer, [preloadedState], [enhancer])
우리는 지금 '프리로드 상태' 만 토론하고 있으며, 잠시 후에 감속기를 설명할 것이다.[사전 로드 상태]: 응용 프로그램의 초기 상태입니다.
2. 읽기 전용 상태
상태 트리는 읽기 전용이며, 응용 프로그램에서 Redux 저장소로 데이터를 전송하는 상태를 변경하는 유일한 방법은 다음과 같이 작업을 전송하는 것입니다.
const action = {
type: 'ADD_USER',
user: {name: 'Rawan', language: 'EN'}
};
store.dispatch(action);
파견 행동은 무엇을 의미합니까?
스케줄링을 응용 프로그램의 트리거 이벤트로 볼 수 있습니다.무슨 일이 일어났는지 우리는 상점에 알리고 싶다.
행동:
변경 내용을 설명하는 일반 JS 객체로, 수행할 작업의 유형을 나타내는 유형 필드가 있습니다.
유형 필드는 "domain/eventName"형식의 설명 문자열이어야 합니다. 예를 들어 "users/userLogin"입니다.
동작 대상에는 무슨 일이 일어났는지 추가 정보를 포함하는 다른 필드가 있을 수 있습니다.우리는 '유효 하중' 이라고 부른다.
const userLoginAction = {
type: 'users/USER_LOGIN',
payload: {
username: "Adam",
password: "pass1234"
}
}
보시다시피, 우리는 동작을 유형과 유효한 부하를 가진 대상으로 성명할 것입니다.3. 순기능(감속기)으로 변경
스케줄링 동작이 상태 트리를 어떻게 변환하는지 지정하기 위해서, Reducer라는 순수 함수를 작성했습니다.
일반 기능:
같은 입력을 주면 항상 같은 출력(상태)을 되돌려주는 함수로 그 되돌려주는 값은 매개 변수의 값에 달려 있다.
예를 들어 1과 4를 구화 함수에 전달하면 항상 5를 얻는다.
또한 순수 기능에는 다음과 같은 부작용이 없어야 한다.
입력 수정, 네트워크 호출, 파일 시스템 변경(fs), DOM 조회, 비동기 타이머 설정, 함수 외부의 일부 상태 수정, 함수의 매개 변수를 수정하여 무작위 수 또는 유일한 무작위 ID(예를 들어 Math.random() 또는 Date)를 생성합니다.지금...등.
감속기:
reducer는 현재 상태와 조작 대상을 매개 변수로 하고 새로운 상태를 되돌려서 상태를 수정할 수 있습니다.
redux 문서에 설명된 대로
You can think of a reducer as an event listener that handles events based on the received action (event) type.
감속기는 세 가지 중요한 규칙이 있다.
비동기식 논리를 실행하거나 임의의 값을 계산하거나 다른 부작용을 일으킬 수 없습니다.
어쨌든
Redux는 모든 응용 프로그램의 상태를'store'라는 단일한 실제 원본에 저장합니다. 상태를 바꾸기 위해 구성 요소는 저장 변경 사항을'스케줄링'할 수 있습니다. 그리고 상태 변경을 알아야 하는 구성 요소는'구독'저장을 통해 상태를 변경할 수 있습니다. 그림과 같습니다.
마지막으로 redux를 사용한 간략한 요약은 다음과 같습니다.
본고는 여기까지입니다. 이것은 Redux의 주요 개념에 대한 소개일 뿐입니다. 저는 당신이 몇 가지를 배울 수 있기를 바랍니다.
즐거운 코딩!
리소스:
https://redux.js.org/
Reference
이 문제에 관하여(Redux 101), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rawaneltobgy/redux-101-a5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)