React的备忘录

反应钩子

我整理了在项目中使用的React hooks,以便作为简洁的备忘录。

使用useState

useState是由初始值和用于更新它的函数组成的。其形式可描述如下。在这种情况下,initialValue是空字符串的初始值。如果想要更新它,可以使用setInitialValue函数。

const [initialValue, setInitialValue] = ''

例如,以下描述将初始值设置为空字符串,当点击按钮时,将触发setInitialValue函数并更新值。

import React, { useState } from 'react';

const YourComponent = () => {
  const [initialValue, setInitialValue] = useState(''); // 初期値を空文字列として設定

  const handleClick = () => {
    setInitialValue('新しい値'); // ボタンがクリックされたら、initialValueを'新しい値'に更新
  };

  return (
    <div>
      <h1>{initialValue}</h1> {/* initialValueの値を表示 */}
      <button onClick={handleClick}>値を更新</button> {/* ボタンをクリックするとhandleClickが呼び出される */}
    </div>
  );
};

export default YourComponent;

使用useEffect

useEffect是指一种将函数执行时机延迟到React渲染之后的hook。
虽然易于使用,但需要注意许多细节,过度滥用会给人留下不好的印象。

以下就是组件渲染或部分重新渲染时useEffect被触发的情况:
如果监视值的数组为空,则只会在初次渲染时触发,如果填入id等值,则每当该值变化时都会触发。

然而,在使用时要保持对于是否真的应该用useEffect进行编写的疑问的重要性

useEffect( コールバック関数, [ 監視する値の配列 ] );

只需要一种选项:
https://zenn.dev/uhyo/articles/useeffect-taught-by-extremist
https://zenn.dev/fujiyama/articles/c26acc641c4e30
https://react.dev/learn/you-might-not-need-an-effect

请使用以下三个链接查看文章内容:
https://zenn.dev/uhyo/articles/useeffect-taught-by-extremist
https://zenn.dev/fujiyama/articles/c26acc641c4e30
https://react.dev/learn/you-might-not-need-an-effect

使用表单

這是一個非常方便的hooks之一。以前在創建表單時需要使用狀態管理的useState等,但現在不僅不需要這些描述,而且驗證等也可以非常輕鬆地簡單寫出來。

以下是可以编写登录表单的示例。非常方便。

在中国古人的生活记载中,描述了捕捉技巧。首先,我们要使用import引入useForm方法,然后通过解构赋值来定义所需的参数。以下示例中,我们使用register、handleSubmit和error这三个参数。

可以使用inputRef={register({ required: true })}来将其注册,以使其变为必需输入。还可以设置错误消息和输入模式。

在提交表单时,输入的值将存储在data中。其键值将由name设置。例如,若name=”email”,则值会存储在data中的{email: hoge@example.com}。因此,可通过data.email来提取该值。

import { useForm } from 'react-hook-form'
const { register, handleSubmit, errors } = useForm<LoginInputsProps>()
...
const onSubmit = async (data: LoginInputs) => {
  registerFunction({
    id: data.email,
    pass: data.password,
  })
}

return ( ...
import React from 'react';
import { useForm } from 'react-hook-form';
// その他のインポート

const YourComponent = () => {
  const {
    register,
    handleSubmit,
    formState: { errors },
  } = useForm();
  
  const onSubmit = (data) => {
    // サブミット時の処理
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <TextField
        inputRef={register({ required: "このフィールドは必須です", pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/ })}
        name="email"
        label="メールアドレス"
        fullWidth
        margin="normal"
        InputLabelProps={{ shrink: true }}
        error={!!errors.email}
        helperText={errors.email}
      />
      <TextField
        inputRef={register({ required: "このフィールドは必須です" })}
        name="password"
        type="password"
        label="パスワード"
        fullWidth
        margin="normal"
        InputLabelProps={{ shrink: true }}
        error={!!errors.password}
        helperText={errors.password}
      />
      <div className="mt-3">
        <Button type="submit" variant="contained" color="primary" fullWidth>
          ログイン
        </Button>
      </div>
    </form>
  );
};

个人的笔记

以下是对本次未使用的hooks的评论:
当使用Redux或easy-peasy等状态管理工具时,似乎不太需要useContext。

我会在未来学习了解useReducer,因为它似乎在某些情况下是必要的。

useCallback/useMemo:起到缓存的作用?在使用重型处理等时似乎是必要的,所以我想要学习一下。

我对useRef的用法不太了解。我想在事件对象中可能会更好,但肯定不是这样的,所以我想要研究一下它们之间的区别。

尽管使用了useEffect,但由于还不了解在哪种情况下应该使用它,我也想要进行调查。

广告
将在 10 秒后关闭
bannerAds