React-tags: useState

作成日 2021年02月26日  ·  4コメント  ·  ソース: i-like-robots/react-tags

このライブラリでフックと状態を使用する方法はありますか? ドキュメントに例は見当たりませんでした。

question

最も参考になるコメント

フックを使って親切に共有できる例はありますか? 制御されたコンポーネントを使用したいのですが。

import React, { useState, useRef } from 'react'

export default function MyForm() {

  const tagsInput = useRef(null);

  const [tags, setTags] = useState([]);
  const [suggestions, setSuggestions] = useState([]);
  const [tagAutocompleteBusy, setTagAutocompleteBusy] = useState(false);

  async function onTagInput(query) {
      if (!tagAutocompleteBusy) {
          setTagAutocompleteBusy(true);
          const result = await fetch(`/tags/autocomplete?term=${query}`);
          setSuggestions(result.data);
          setTagAutocompleteBusy(false);
          return result;
      }
  }

  const onTagDelete = (i) => {
      setTags(() => {
          tags.splice(i, 1);
          return tags;
      });
  }

  const onTagAddition = (tag) => {
      setTags(() => {
          return [...tags, tag];
      });
  }

  return (<>
    <ReactTags
        ref={tagsInput}
        tags={tags}
        suggestions={suggestions}
        onDelete={onTagDelete}
        onAddition={onTagAddition}
        onInput={onTagInput}
    />
  </>);
}

全てのコメント4件

こんにちは、はい、コンポーネントはクラスベースのコンポーネントと同様にuseState()でも同様に機能します。

フックを使って親切に共有できる例はありますか? 制御されたコンポーネントを使用したいのですが。

フックを使って親切に共有できる例はありますか? 制御されたコンポーネントを使用したいのですが。

import React, { useState, useRef } from 'react'

export default function MyForm() {

  const tagsInput = useRef(null);

  const [tags, setTags] = useState([]);
  const [suggestions, setSuggestions] = useState([]);
  const [tagAutocompleteBusy, setTagAutocompleteBusy] = useState(false);

  async function onTagInput(query) {
      if (!tagAutocompleteBusy) {
          setTagAutocompleteBusy(true);
          const result = await fetch(`/tags/autocomplete?term=${query}`);
          setSuggestions(result.data);
          setTagAutocompleteBusy(false);
          return result;
      }
  }

  const onTagDelete = (i) => {
      setTags(() => {
          tags.splice(i, 1);
          return tags;
      });
  }

  const onTagAddition = (tag) => {
      setTags(() => {
          return [...tags, tag];
      });
  }

  return (<>
    <ReactTags
        ref={tagsInput}
        tags={tags}
        suggestions={suggestions}
        onDelete={onTagDelete}
        onAddition={onTagAddition}
        onInput={onTagInput}
    />
  </>);
}

この例を共有するために時間を割いていただきありがとうございます@kulahin

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

jraack picture jraack  ·  6コメント

famouspotatoes picture famouspotatoes  ·  5コメント

thienanle picture thienanle  ·  9コメント

filippofilip95 picture filippofilip95  ·  4コメント

yrik picture yrik  ·  4コメント