tamakipedia

鎌倉でフロントエンドエンジニアをしています。Wordpress/Javascript/JQuery が得意で、現在React勉強中です!

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