Введение Струтура компонента Состояние компонента Реализация Ссылки

Input

Текстовые поля позволяют пользователям вводить текст в пользовательский интерфейс. Обычно они появляются в формах и диалогах. Мы используем для проектирования input обычный <div>, для которого задаём все необходимые параметры и стилизуем под себя.

Структура компонента

Input состоит из контейнера, и текста в различных состояниях. Input должен выделяться и указывать на то, что пользователи могут вводить информацию, а также должно быть понятно какую именно информацию нужно вводить.

Структура чипса

Состояние компонента

Исходя из структуры, мы можем выявить несколько состояний компонента с данными и без них. А также нельзя забывать про состояние ошибки.

Структура чипса

Реализация

Мы создаём сложный компонент, который может хранить в себе массив с данными, например с chip.

import React, { PureComponent } from 'react'
import './A_Input.css'

export default class A_Input extends PureComponent {
  constructor(props) {
    super(props)
  }

  render() {
    const { children, onFocus, onBlur, placeholder, disabled } = this.props

    return (
      <div className="A_InputContainer">
        {children}
        {!disabled && (
          <input
            placeholder={placeholder}
            className="A_Input"
            onBlur={onBlur}
            onFocus={onFocus}
          />
        )}
      </div>
    )
  }
}

Затем прописываем стили для этого компонента.

.A_InputContainer .A_Input {
  width: 610px;
  font-size: 20px;
  color: #426060;
  cursor: auto;
  background-color: #f4f4f4;
  padding: 14px 20px;
  border-radius: 10px;
  font-weight: 300;
  border: none;
  outline: none;
}

Мы создали компонент, но описали только его функционал, теперь его нужно отрендерить. Попробуй теперь этот компонент вывести согласно своей структуре проекта. Ты можешь увидеть как это делаем мы, а также посмотреть получившийся input.

import React from 'react'
import ReactDOM from 'react-dom'
import A_InputContainer from '../../components/atoms/A_Input/A_Input.jsx'

document.addEventListener('DOMContentLoaded', () => {
  ReactDOM.render(
    <A_InputContainer placeholder="Введи что-то про фрукты" />,
    document.body
  )
})

Получаем следующий результат.

Структура чипса

Также для тебя ссылки на Figma с дизайн системой и GitHub с библиотекой компонентов.

Составляющие

В этот компонент часто выводятся следующие компоненты.

Этот компонент часто выводится в следующих компонентах.