Текстовое поле с ограничением количества символов

ReactReactBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы создадим компонент ограниченного текстового поля с использованием React. Целью этого практического занятия является получение практического опыта в использовании React-хуков, таких как useState() и useCallback(), для создания компонента, который ограничивает количество символов, которое пользователь может ввести в текстовом поле. В конце этого практического занятия у вас будет функциональный компонент текстового поля, который отображает количество введенных символов и ограничивает количество символов, которое пользователь может ввести.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL react(("React")) -.-> react/FundamentalsGroup(["Fundamentals"]) react(("React")) -.-> react/AdvancedConceptsGroup(["Advanced Concepts"]) react(("React")) -.-> react/StateManagementGroup(["State Management"]) react/FundamentalsGroup -.-> react/jsx("JSX") react/FundamentalsGroup -.-> react/event_handling("Handling Events") react/AdvancedConceptsGroup -.-> react/hooks("React Hooks") react/StateManagementGroup -.-> react/use_state_reducer("Using useState and useReducer") subgraph Lab Skills react/jsx -.-> lab-38351{{"Текстовое поле с ограничением количества символов"}} react/event_handling -.-> lab-38351{{"Текстовое поле с ограничением количества символов"}} react/hooks -.-> lab-38351{{"Текстовое поле с ограничением количества символов"}} react/use_state_reducer -.-> lab-38351{{"Текстовое поле с ограничением количества символов"}} end

Текстовое поле с ограничением количества символов

В ВМ уже предоставлены index.html и script.js. В общем, вам нужно только добавить код в script.js и style.css.

Вот код:

const LimitedTextarea = ({ rows, cols, value, limit }) => {
  const [content, setContent] = React.useState(value.slice(0, limit));

  const setFormattedContent = React.useCallback(
    (text) => {
      setContent(text.slice(0, limit));
    },
    [limit]
  );

  return (
    <>
      <textarea
        rows={rows}
        cols={cols}
        onChange={(event) => setFormattedContent(event.target.value)}
        value={content}
      />
      <p>
        {content.length}/{limit}
      </p>
    </>
  );
};

ReactDOM.createRoot(document.getElementById("root")).render(
  <LimitedTextarea limit={32} value="Hello!" />
);

В этом коде мы:

  • Упрошили комментарии, чтобы дать более краткое описание того, что делает каждая часть кода.
  • Удалили ненужные комментарии кода.
  • Удалили функцию setContent из массива зависимостей useCallback, так как ее там не нужно.
  • Добавили круглые скобки вокруг аргумента text в функции useCallback для согласованности.
  • Использовали стрелочные функции для обработчика события onChange для краткости.

Пожалуйста, нажмите кнопку 'Go Live' в нижнем правом углу, чтобы запустить веб-сервис на порту 8080. Затем вы можете обновить вкладку Web 8080, чтобы просмотреть веб-страницу.

Резюме

Поздравляем! Вы завершили практическое занятие по текстовому полю с ограничением количества символов. Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.