生活コード反作用-redux 2022改訂版要約ノート
13519 ワード
リトラクトに関係のないツールとリトラクトを使用することで、リトラクトの生産性を向上
Ridexを使用する理由を知るために、純粋なRidexのみを使用してアプリケーションを作成し、Ridexを使用してその不便を克服します.
利用stackblitz
left 1,2,3構成部品を作成します.
デフォルト値が1のハイパースレッディングの定義
このような過程を何度も経験しなければならない.
Bluetoothを使用する場合と同様の効果が得られます.
独立したツール「リトラクト」と「リトラクト」を接続するためのツール「反作用」-redox
Ridexを使用する理由を知るために、純粋なRidexのみを使用してアプリケーションを作成し、Ridexを使用してその不便を克服します.
利用stackblitz
リフトのみ
left 1,2,3構成部品を作成します.
デフォルト値が1のハイパースレッディングの定義
const [number, setNumber] = useState(1);
最上位レベル番号ステータスを下の左側3に転送するには<Left1 number={number}></Left1>
...
<h1>Left1: {props.number}</h1>
h 2とh 3を繰り返すこのような過程を何度も経験しなければならない.
rightタグを作成し、right 3にボタンを作成してleft素子の数字を次々と増やしたい場合は?
일단 right3에 버튼을 만들고 이벤트를 걺
<input type="button" value="+" onClick={()=>{props.Increase();}}></input>
<Right3 onIncrease={() => {props.onIncrease();}}></Right3>를 반복
최상위 칸에는 setNumber를
<Right1 onIncrease={() => {setNumber(number + 1);}}></Right1>
Rootとボタンの間の構成部品にコードを1つずつ挿入する必要があります.propで有線接続するように.リデスを一緒に使えば
Bluetoothを使用する場合と同様の効果が得られます.
独立したツール「リトラクト」と「リトラクト」を接続するためのツール「反作用」-redox
//redux와 react-redux을 같이 설치
npm install redux react-redux
import React, { useState } from 'react';
import './style.css';
import { createStore } from 'redux'; //제일 먼저 스토어 생성
import { Provider, useSelector, useDispatch, connect } from 'react-redux';
//리엑트 리덕스의 4인방 Provider:컴포넌트, useSelector:어떤 스테이트 값을 쓸지 선택하는 것 ,useDispatch: 스테이트 값을 변경할 때 사용, connect: 어렵고 재사용성을 할때만 사용됨
function reducer(currentState, action) { //리뷰서는 스토어 안에 있는 스테이트를 어떻게 바꿀지 결정함. 따라서 두개의 파라미터를 가짐. 첫번재 파라미터는 현재의 스테이트값, 둘째 파라미터는 어떻게 받을지를 의미하는 액션
if (currentState === undefined) { //숫자가 정의되지 않았을 경우 1을 기본 스테이트값으로 하고 리턴
return {
number: 1,
};
}
const newState = { ...currentState }; //새로운 스테이트를 받는데 과거의 스테이트를 복제
if (action.type === 'PLUS') {
newState.number++;
}
return newState; //11줄로 변화시킨 스테이트를 리턴한다
}
const store = createStore(reducer);
export default function App() {
return (
<div id="container">
<h1>Root</h1> //이제 루트에 있는 데이터는 필요 없으므로 number와 setNumber을 지워버림
<div id="grid">
<Provider store={store}> //프로바이더의 프롭중에 스토어를 반드시 정의해야함 //18줄의 스토어가 {괄호}안으로 들어감
<Left1></Left1>
<Right1></Right1>
</Provider>
</div>
</div>
);
}
function Left1(props) {
return (
<div>
<h1>Left1 : {props.number}</h1>
<Left2 number={props.number}></Left2>
</div>
);
}
function Left2(props) {
console.log('2');
return (
<div>
<h1>Left2 : {props.number}</h1>
<Left3 number={props.number}></Left3>
</div>
);
}
function Left3(props) {
console.log('3');
const number = useSelector((state) => state.number);
return (
<div>
<h1>
Left3 : {number}
{props.number}
</h1>
</div>
);
}
function Right1(props) {
return (
<div>
<h1>Right1</h1>
<Right2
onIncrease={() => {
props.onIncrease();
}}
></Right2>
</div>
);
}
function Right2(props) {
return (
<div>
<h1>Right2</h1>
<Right3
onIncrease={() => {
props.onIncrease();
}}
></Right3>
</div>
);
}
function Right3(props) {
const dispatch = useDispatch();
return (
<div>
<h1>Right3</h1>
<input
type="button"
value="+"
onClick={() => {
dispatch({ type: 'PLUS' });
}}
></input>
</div>
);
}
//넘버 값을 무선으로 연결하려면
function f(state){
return state.number;
}
function Left3(props) {
const number = useSelector(f); //넘버값을 무선으로 연결하기 위해서 함수를 인자로 받는 useSelector를 사용,
return (
<div>
<h1>Left3 : </h1>
</div>
);
}
//위의 f 함수를 간단하게 쓰면
function Left3(props) {
const number = useSelector((state) => state.number);
return (
<div>
<h1>
Left3 : {number} //스토어에 저장된 넘버스테이트와 말단 Left3컴포넌트를 무선으로 연결한 것
</h1>
</div>
);
}
Dispatchボタンで数字を変更できます.Reference
この問題について(生活コード反作用-redux 2022改訂版要約ノート), 我々は、より多くの情報をここで見つけました https://velog.io/@milkteaisthebest/생활코딩-리엑트-리덕스-2022-개정판テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol