[解決済み] 関数内のReactJSライフサイクルメソッド Component
質問
コンポーネントをクラス内に書く代わりに、関数構文を使いたいのですが、どうすればいいですか?
をオーバーライドするにはどうすればよいですか?
componentDidMount
,
componentWillMount
関数コンポーネントの内部?
それは可能なのでしょうか?
const grid = (props) => {
console.log(props);
let {skuRules} = props;
const componentDidMount = () => {
if(!props.fetched) {
props.fetchRules();
}
console.log('mount it!');
};
return(
<Content title="Promotions" breadcrumbs={breadcrumbs} fetched={skuRules.fetched}>
<Box title="Sku Promotion">
<ActionButtons buttons={actionButtons} />
<SkuRuleGrid
data={skuRules.payload}
fetch={props.fetchSkuRules}
/>
</Box>
</Content>
)
}
解決方法は?
編集する。
の導入に伴い
Hooks
は、機能的なComponentsに、状態だけでなく、ライフサイクルのような振る舞いを実装することが可能である。現在では
フックは、ステートや他の機能を使用するための新しい機能提案です。 クラスを書かずにReactの機能を使うことができます。これらはReactの一部としてリリースされています。 v16.8.0
useEffect
フックは、ライフサイクルの動作を再現するために使用することができ、また
useState
は、ファンクションコンポーネントに状態を保存するために使用することができます。
基本的な構文です。
useEffect(callbackFunction, [dependentProps]) => cleanupFunction
のようなフックでユースケースを実装することができます。
const grid = (props) => {
console.log(props);
let {skuRules} = props;
useEffect(() => {
if(!props.fetched) {
props.fetchRules();
}
console.log('mount it!');
}, []); // passing an empty array as second argument triggers the callback in useEffect only after the initial render thus replicating `componentDidMount` lifecycle behaviour
return(
<Content title="Promotions" breadcrumbs={breadcrumbs} fetched={skuRules.fetched}>
<Box title="Sku Promotion">
<ActionButtons buttons={actionButtons} />
<SkuRuleGrid
data={skuRules.payload}
fetch={props.fetchSkuRules}
/>
</Box>
</Content>
)
}
useEffect
は、コンポーネントがアンマウントされたときに実行される関数を返すこともできます。これはリスナーの登録を解除するために使うことができます。
componentWillUnmount
:
例:componentWillUnmount
useEffect(() => {
window.addEventListener('unhandledRejection', handler);
return () => {
window.removeEventListener('unhandledRejection', handler);
}
}, [])
を作るには
useEffect
特定のイベントを条件とする場合、値の配列を与えて変化をチェックすることができます。
例:componentDidUpdate
componentDidUpdate(prevProps, prevState) {
const { counter } = this.props;
if (this.props.counter !== prevState.counter) {
// some action here
}
}
フック相当
useEffect(() => {
// action here
}, [props.counter]); // checks for changes in the values in this array
この配列を含める場合は、コンポーネントスコープから時間経過とともに変化するすべての値 (props、state) を含めるようにしてください。
を使用するには、いくつかの微妙な点があります。
useEffect
API をチェックアウトしてください。
Here
.
v16.7.0以前
関数コンポーネントの特性は、Reactsのライフサイクル関数にアクセスできないことや
this
キーワードを使用します。を拡張する必要があります。
React.Component
クラスを使用します。
class Grid extends React.Component {
constructor(props) {
super(props)
}
componentDidMount () {
if(!this.props.fetched) {
this.props.fetchRules();
}
console.log('mount it!');
}
render() {
return(
<Content title="Promotions" breadcrumbs={breadcrumbs} fetched={skuRules.fetched}>
<Box title="Sku Promotion">
<ActionButtons buttons={actionButtons} />
<SkuRuleGrid
data={skuRules.payload}
fetch={props.fetchSkuRules}
/>
</Box>
</Content>
)
}
}
関数コンポーネントは、余分なロジックを必要とせず、Componentのレンダリングのみを行いたい場合に有効です。
関連
-
[解決済み] React JSX内のループ
-
[解決済み] setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングすることは可能ですか?
-
[解決済み] React jsのonClickはメソッドに値を渡すことができない
-
[解決済み] 親メソッドから子メソッドを呼び出す
-
[解決済み] Reactコンポーネント外でのクリックを検出する
-
[解決済み] ReactJSでコンポーネントがtext型の非制御入力を制御エラーに変更する場合
-
[解決済み] ReactJS Componentに複数のクラスを追加する方法は?
-
[解決済み] ReactJSで子コンポーネントから親コンポーネントにデータを渡すには?
-
[解決済み】ReactJS - "setState "が呼ばれるたびにrenderが呼び出されるのですか?
-
[解決済み】Reactコンポーネントが再レンダリングされる原因を追跡する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Warning.Itが表示されるのはなぜですか?Functions are not valid as a React child?
-
[解決済み] React テキストを挟んだ横長の仕切りを作る
-
[解決済み] React + TypeScript のエラーです。この呼び出しにマッチするオーバーロードがありません
-
[解決済み] react.jsで複数のモジュールをエクスポートする
-
[解決済み] ReactJS で inst.render が関数でないエラーが発生する
-
[解決済み] アクシオスは定義されていません
-
[解決済み] React Hooksの「exhaustive-deps」lintルールを理解する
-
[解決済み] create-react-appビルドスクリプトを実行する際に、ビルド.env変数を設定するには?
-
[解決済み] Reactプロジェクトに.envファイルを追加する
-
[解決済み] Reactでグローバル変数を宣言する方法とは?