[rust+react] 4. React tutorial/2
1. Props
propsとは何ですか.
これは、親コンポーネントから子コンポーネントにデータを送信する方法です.
もちろんだめですが、ConverterAppはAppコンポーネントの状態を使用できません.
こんなことが可能になるかもしれない.
1.1 Propsの使用
うん.似ていますが、少し違います.
function Btn({x , y }){
return <button style={{
backgroundColor: "Tomato",
color:"white",
padding:"10px 20px",
border:0,
borderRadius:10,
}}> {x ? x : y} </button>;
}
componentにパラメータを入力できます.<Btn text="Save Changes" x="2" />
<Btn text="Confirm" y = "4"/>
伝達される因子は制限されず、アイテムを受け取るx props.あるいはy
私が書いたように{x,y,text}で受信します.
私がここに書いたコードは、xがあれば、xがなければ、yのボタンを印刷することです.
運転がよい.
和音に合わせて打つのも向上に役立ちますが、少しねじってみると頭に残りやすいです.
1.2 Propsパラメータの制限は?
どこまで届くか見てみましょう.
予想するとコンポーネントやStateを送ることも可能でしょうか?
<Btn text={value} x="2" onClick={changeValue}/>
前述したように、onClickイベントリスナーが作成されたように錯覚を引き起こします.しかし実際には誰も変わらず、支柱をBtnに伝えるだけだ.
次にコンポーネントに戻ります
function Btn({onClick,text,x , y }){
return <button style={{
backgroundColor: "Tomato",
color:"white",
padding:"10px 20px",
border:0,
borderRadius:10,
}}
onClick ={onClick}
> {text} </button>;
}
ここでeventListenerを設定します.1.3 React.memo()
function App() {
const [value, setValue] = React.useState("Save Changes");
const changeValue = () => setValue("Revert Changes");
return(
<div>
<Btn text={value} x="2" onClick={changeValue}/>
<Btn text="Confirm" y = "4"/>
</div>
);
}
作成したコードは、最初のボタンのpropsのみを変更します.ただし、Reactのルールに従って、ブラウザはアプリケーション内のすべてのコンテンツを再レンダリングします.これは効率的ではありません.したがって、Propを変更しない限り、再レンダリング機能は最適化に役立ちます.
React.memo()
機能を使用すればよい.const MemorizedBtn = React.memo(Btn)
function App() {
const [value, setValue] = React.useState("Save Changes");
const changeValue = () => setValue("Revert Changes");
return(
<div>
<MemorizedBtn text={value} x="2" onClick={changeValue}/>
<MemorizedBtn text="Confirm" y = "4"/>
</div>
);
}
簡単な変更だけで、ブラウザは2番目のConfirm
textコンポーネントを再レンダリングしません.1.4 Prop Types
コラボレーション時に小さなミスを防ぐ機能です.
MemorizedBtn.propTypes = {
text: PropTypes.string,
x: PropTypes.number,
y: PropTypes.number,
}
この設定は、MemorizedBtn
のpropを強制的にtypeします.書き間違えた場合は、次の警告が表示されます.
y = "4"
数字ではなく文字をスキップしました.proptypeはこのような時に警告します.
y = {4}
に変更するまで消えません.2. create-react-app
2.1 nodejs
craを使用するには、まずnodejsをインストールする必要があります.
node.私はjsがバックエンドであることを知っています.まずインストールしましょう.
時間がかかります...
npm startにより開発用のサーバを構築した.
最終目標はこれを針金団に変えることです.
2.2独立符号化とcss
スタイルを適用する場合は、
.module.css
というファイルで行うのが便利です.App.アプリケーションはjsのスタイルに使用されます.module.cssという名前のファイルを作成します.
クラスを作成するだけでstyleを適用できます.
App.module.css
.title {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
font-size: 18px;
color:blueviolet;
}
App.js
import styles from "./App.module.css";
function App() {
return (
<div>
<h1 className={styles.title}>
Welcome Back!!
</h1>
<Button text="Hello React"/>
</div>
);
}
2.3 Effect
Reactのコアリアクション型アプリケーションのためのEffectですか?
一番大切だと言って、しばらく休んでからします.
2.3.1一度だけ実行するコード
ボタンの
onClick
Eventリスナーに関連付けられた関数を作成すると、どんなコンテンツが表示されても一緒に実行されます.たとえば
const onClick = () => setValue((prev) => prev+1);
console.log("Hi , I'm rendered);
以上のコードは、ボタンが押されたときに表示されます.console.ログを実行します.しかし、場合によっては、初対面で挨拶したいだけかもしれません.
const onClick = () => setValue((prev) => prev+1);
???(console.log("Hello , I'm rendered in first));
このような状況を理解してみましょう.(もちろん、別のstateを作成して条件文を使用すると簡単です)
console.log("I run all the time");
useEffect(()=>console.log("I run only once"),[]);
これがuseEffect関数です.最初のパラメータとしてこの関数に入る関数は,状態が変化しても再実行されない.
一度だけ実行します.
2.3.2 Deps
EffectはUSEffect関数に対して反応型ではない.
要するに,2番目のパラメータに入るDepsとは何かを理解しよう.
useEffect(()=>{
console.log("searching for", keyword);
},[keyword]);
2番目の因子は追跡可能な状態にある.以上のコードは、キーワードが変化した場合にのみconsole.log
が実行されます.上に書いたコードは追跡可能な状態がないので、一度だけ(空の配列)実行します.
2.3.3練習
App.js
function App() {
const [counter, setValue] = useState(0);
const [keyword, setKeyword] = useState("");
const onClick = () => setValue((prev) => prev+1);
const onChange = (event) => setKeyword(event.target.value);
console.log("I run all the time");
useEffect(()=>console.log("I run only once"),[]);
useEffect(()=>{
console.log("searching for", keyword);
},[keyword]);
return (
<div>
<input
value={keyword}
onChange={onChange}
type="text"
placeholder="Search here . . ."/>
<h1 className={styles.title}>
{counter}
</h1>
<Button onClick={onClick} state={counter} text="Click me"/>
</div>
);
}
Button.js
function Button({text , onClick , state}){
useEffect(()=>console.log("The thing i chase is ",state) , [state])
return <button onClick={onClick} className={styles.btn}>{text}</button>;
}
App.js
カウンタはstateパラメータを介してButtonに渡される.Button.js
Button componentはstateパラメータを受信し、その変化を追跡して出力する.思い通りにそろばんをはじく
サブコンポーネントが親のstateを継承すれば、親のstateを追跡することができます.
Why react again
reactは、最小単位をレンダリングできるので良いです.
しかし,本章で学んだ効果機能を用いなければ,その原則に反する.
他の機能のボタンをクリックすると、もちろん検索ウィンドウの入力を追跡する理由はありません.
適切なuseEffectを使用して、必要な部分を再実行するだけのコードを作成します.
Reference
この問題について([rust+react] 4. React tutorial/2), 我々は、より多くの情報をここで見つけました
https://velog.io/@devwook/rustreact-3.-React-tutorial-2
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([rust+react] 4. React tutorial/2), 我々は、より多くの情報をここで見つけました https://velog.io/@devwook/rustreact-3.-React-tutorial-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol