React-tags: 使用状态

创建于 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 等级

相关问题

ekinalcar picture ekinalcar  ·  10评论

luciemac picture luciemac  ·  7评论

jraack picture jraack  ·  6评论

famouspotatoes picture famouspotatoes  ·  5评论

V6
i-like-robots picture i-like-robots  ·  11评论