note what I read

定期的に読んだ本のメモ・感想を連ねております m(__)m

【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>