tamakipedia

フロントエンドエンジニア。Typescriptもう特訓中です。一日の振り返りや学んだことをちょっとずつ吐いています。

【react】onChangeの度にstyled-componentsが呼び出されて、textareaが入力できない

昨日どハマりした例です。

reactのフォーム用モジュール formikを使用しています。
textareaタグをスタイルコンポーネントで囲い
その中でonchangeを読んでいます。

          <TextareaWrapper>
            <textarea
              style={{ width: '100%', color: 'black' }}
              name="todo"
              onChange={formik.handleChange}
              rows="5"
              defaultValue={defaultTodo}
            >
            </textarea>
          </TextareaWrapper>

下記がtextareaWrapperのコンポーネントです。

  const TextareaWrapper = styled.div`
    max-width: 600px;
    margin: auto;
    border: 1.5px solid #03A9F4;
    border-radius: 7px;
    color: black;
    background: white;
  `

こうするとonChangeが発火する度にtextareaWrapperコンポーネントが再レンダリングされるので
文字を入力する度にテキストエリアの中身が空になってしまいます。

styled-componentsではなくsassに書き換えることで解決しました。

          <div>
            <textarea
              style={{ width: '100%', color: 'black' }}
              name="todo"
              onChange={formik.handleChange}
              rows="5"
              defaultValue={defaultTodo}
            >
            </textarea>
          </div>