あなたのインタビューの反応フック
イントロの方法を右ダイビングで行こう!
米国不動産
人々は通常、小道具と一緒に状態をミックスするが、その非常に異なる.
Props are actually what you pass to a component from outside of it. It can only be changed from outside the component.
State are values which is triggered inside the component itself. It is also mutable by the component.
USENTは機能的なコンポーネントの中にローカルの状態を追加するために呼び出すフックです.反応は再レンダリングの間の状態値を保存します.
USEstateは現在の状態値とそれを更新できる関数を返します.
USENTは、初期状態である1つだけの議論を取る.以下の例では
Name
ですアプリケーションの状態を変更すると、DOM自体が自動的に新しい値を表示します.
import {useState} from "react";
const StateTutorial = () => {
const [inputValue, setInputValue] = useState("Name")
let onChange = (event) => {
const newValue = event.target.value;
setInputValue(newValue);
}
return(
<div>
<input placeholder="Enter your name.." onChange={onChange}/>
{inputValue}
</div>
)
}
export default StateTutorial;
通常、変数が終了すると変数は“消滅”するが、状態変数は反応によって保存される.使用者
ステートマネージメントロジックがコンポーネント本体の重要な部分を占めていることをUSEStateを使用する場合があります.理想的には、状態管理はそれ自身の別々のスペースでされなければならない何かである、さもなければ、我々は維持するのが難しい、そして、読むのが難しい状態論理と状態管理の混合を得ます!
この問題を解決するためには、コンポーネントの状態管理を抽出するためにusereducerフックを提供します.
ユーザ教育者は、2つの議論を受け入れます:還元器機能と初期状態.
現在の状態とディスパッチ関数の2つの項目の配列を返します.
Initial state: It is the value the state is initialised with.
Current state: It holds the value of the state currently in.
Reducer function: The reducer function accepts current state and an action object as parameters. And depending on the action object, the reducer function must update the state and hence returning a new state.
Action object: The object that describes how to update the state. It has a property called type which describes what kind of state update the reducer function must do.
Dispatch function: This function dispatches an action object i.e. whenever you want to update the state you simply call the dispatch function with the appropriate action object.
これらすべてを知る我々は自分自身で国家管理ロジックを書くことができます!
ここでは、ボタンをクリックすると、カウンタの値を増加するだけでなく、表示/非表示のクリックでテキストを非表示にするコードを書いた.
import React, { useReducer } from "react";
const reducer = (state, action) => {
switch (action.type) {
case "INCREMENT":
return { count: state.count + 1, showText: state.showText };
case "toggleShowText":
return { count: state.count, showText: !state.showText };
default:
return state;
}
};
const ReducerTutorial = () => {
const [state, dispatch] = useReducer(reducer, { count: 0, showText: true });
return (
<div>
<h1>{state.count}</h1>
<button
onClick={() => {
dispatch({ type: "INCREMENT" });
dispatch({ type: "toggleShowText" });
}}
>
Click Here
</button>
{state.showText && <p>This is a text</p>}
</div>
);
};
export default ReducerTutorial;
TLR状態を更新したい場合は、適切にアクションオブジェクトをdispatch(action)
と呼びます.次に、アクションオブジェクトは、状態を更新するreducer()
関数に転送されます.状態が減速器によって更新された場合、コンポーネントは再レンダリングされ、[state, ...] = useReducer(...)
フックは新しい状態値を返します.効果
UseEffect非常に重要なフックは、すべての反応のユーザーがacrosed来ている必要がありますフックです.
このフックは、レンダリングが画面にコミットされた後に実行されるパラメータとして機能します.通常、UseEffectに渡されたコールバックは、すべての初期レンダリング後に実行されますが、値を含む依存配列を使用して変更できます.ときに変更効果をトリガ!
ここでは、依存配列が空であるので、プログラムは初期のレンダリングのAPIを呼び出します.
function EffectTutorial() {
const [data, setData] = useState("");
const [count, setCount] = useState(0);
useEffect(() => {
axios
.get("https://jsonplaceholder.typicode.com/comments")
.then((response) => {
setData(response.data[0].email);
console.log("API WAS CALLED");
});
}, []);
return (
<div>
Hello World
<h1>{data}</h1>
<h1>{count}</h1>
<button
onClick={() => {
setCount(count + 1);
}}
>
Click
</button>
</div>
);
}
I’m sure I don’t have to explain further how useEffect works as its one of the first few hooks a react developer gets to know about.
国際交流基金
このフックはほとんど効果と同じです、そして、はい、それらの間に類似点があります!両方の更新DOMは、両方の間に基本的な違いがある場合を除き、同じ型のパラメータを取ります.
UseLayoutEffectは、画面がレンダリングされる前に実行されますが、DOMが更新された後にのみ実行されます.
ここで、部品はこのフックの働きを示します.
function LayoutEffectTutorial() {
const inputRef = useRef(null);
useLayoutEffect(() => {
console.log(inputRef.current.value);
}, []);
useEffect(() => {
inputRef.current.value = "HELLO";
}, []);
return (
<div className="App">
<input ref={inputRef} value="SEKIRO" style={{ width: 400, height: 60 }} />
</div>
);
}
Even though there isn’t a noticeable effect when the useEffect hook is replaced by useLayoutEffect, but it is advised to stick with useEffect unless it causes some problems.
ユーザー
Userefは初期値として1つの引数を受け入れて、リファレンスを返すビルトイン反応フックです.参照は、「電流」と呼ばれる特別な特性を持っているオブジェクトです.
reference.current access the reference value and reference.current.value updates it.
参照の値は、コンポーネントの再レンダリングの間で永続化され、それを更新すると、状態の更新とは異なり、コンポーネントの再描画をトリガしません.そのため、参照更新が同期している一方で、状態更新は非同期であると結論付けられる.
ここでは、プログラムは単にボタンをクリックしてそれに書かれた何かの入力をクリアします.
function RefTutorial() {
const inputRef = useRef(null);
const onClick = () => {
inputRef.current.value = "";
};
return (
<div>
<h1>Pedro</h1>
<input type="text" placeholder="Ex..." ref={inputRef} />
<button onClick={onClick}>Change Name</button>
</div>
);
}
使用法
反応中のデータフローは一方向であるつまり、関数とデータを小道具を通して渡す必要があり、コンポーネントはpropsとして渡されたものにアクセスすることができます.双方向データフローが必要な場合、ReduxやResponse Context APIなどのライブラリを使用します.
しかし、いくつかの場合では、reduxを輸入するか、文脈を使用することは単に釘を切るために剣を使うのと同じです.これは双方向の流れを持つ軽量な解決策を提供します.
以下に例を示します.
関数IserativeHandleでは、ボタンコンポーネントを参照するためにuseref hookを使用しました.今、私はコンポーネントのリファレンスを使用できないことを知っています、そして、UTFはDOM要素で使われなければなりません、しかし、私がインポートした通知を転送します.
The forwardRef function allows us to transform a functional component and allow it to accept reference form its parent component. Which is how not only we can grab props but we can also grab any references that is passed through the parent.
コンポーネントにおいては、refを使用して呼び出すことができる関数を定義することができます.
このフックは2つのパラメータをとります.
親コンポーネントからの参照
bオブジェクトを返す関数
以来、これはまだあなたの多くの人々に混乱している可能性がありますそれはあなたのコードエディタに以下のコードをペーストペーストして、それをよりよく理解するために実行する賢くなります.
import React, { forwardRef, useImperativeHandle, useState } from "react";
const Button = forwardRef((props, ref) => {
const [toggle, setToggle] = useState(false);
useImperativeHandle(ref, () => ({
alterToggle() {
setToggle(!toggle);
},
}));
return (
<>
<button>Button From Child</button>
{toggle && <span>Toggle</span>}
</>
);
});
function ImperativeHandle() {
const buttonRef = useRef(null);
return (
<div>
<button
onClick={() => {
buttonRef.current.alterToggle();
}}
>
Button From Parent
</button>
<Button ref={buttonRef} />
</div>
);
}
Reference
この問題について(あなたのインタビューの反応フック), 我々は、より多くの情報をここで見つけました https://dev.to/pritamdeb/-react-hooks-for-your-interview-2gejテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol