質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

2031閲覧

Reactでstyled-componentsが上手くいかない

pikari

総合スコア14

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

1クリップ

投稿2020/04/28 18:40

すでに関数が宣言されているとエラーが出てしまう

Reactを学習し始めたばかりです。Todoリストのデモも作成しています。★で囲んであるコードを書かなければ正常に画面にcssが反映されるのですが、★で囲まれた部分(Formタグの中のformタグに反映させたいcss)を記載した途端

Failed to compile
./src/App.js
Line 22:7: Parsing error: Identifier 'Form' has already been declared
20 | font-size: 3rem;
21 | `

22 | const Form = styled.form`

| ^

23 | text-align: center;
24 | `
25 |

というエラー出てしまいます。

記載する部分が違うのか、そもそも記載の仕方が違うのでしょうか。(Form.jsのコンポーネントに書くのか)
コードの書き間違いはないと思うのですが...初歩的な質問ですいません。
お時間のある方、宜しくお願いします。

index.js

import

1import ReactDOM from 'react-dom' 2import App from './App' 3 4ReactDOM.render( 5 <App />, 6 document.getElementById('root') 7) 8コード

App.js

import

1import Form from './Form' 2import List from './List' 3 4import styled from 'styled-components' 5 6const App = () => { 7 return ( 8 <> 9 <Title>Todo App</Title> 10 <Form></Form> 11 <List></List> 12 </> 13 ) 14} 15 16const Title = styled.h1` 17 text-align: center; 18 color: #ff7a84; 19 font-size: 3rem; 20` 2122const Form = styled.form` 23text-align: center; 24` 2526 27export default App 28コード

Form.js

import

1 2const Form = () => { 3 return ( 4 <form> 5 <input type="text" /> 6 </form> 7 ) 8} 9 10export default Form 11コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは

順番としては、以下になります。

(1) styled でスタイルをあてた form のコンポーネントを、(Form ではない名前で)作る。

(2) 上記のスタイルをあてたコンポーネントを import して、これを <form> の替わりに使って、Formを作る。

以下は、上記のサンプルです。

このサンプルでは、styled でスタイルをあてたコンポーネントを 1つのファイルstyles.js にまとめており、上記(1) の、styled でスタイルをあてた form のコンポーネントを、MyFormという名前で作っておき、Form はこの MyFormをimport して作っています。また、formにスタイルが効いていることが分かりやすいように、formにあてるスタイルを追加しています。

参考になれば幸いです。

投稿2020/04/28 23:41

jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pikari

2020/04/29 12:57

記載通り実装してみた所、解決致しました! 動作確認までつけて頂きわかりやすかったです! ありがとうございます!
jun68ykt

2020/04/29 13:16

どういたしまして???? > 解決致しました! とのことで、よかったです????
guest

0

私もつい最近Reactに触れたばかりなのでお力になれるかどうかわかりませんし、石をぶつけられても辛いのですが…。

'Form' has already been declaredって**'Form'ってやつはもう宣言されてるで、再宣言すんなや!**ってことですよね?
constって定数ですから、再代入や再宣言はできないのに、import Form from './Form'const Form = styled.formで宣言が2回されてて怒られてるという話ではないのでしょうか…。
2回めのFormの名称を変更してみたりしたら通りませんかね??

…初学者なので、的はずれなことを申し上げていたらすいません。
お力になれていれば幸いです。

……あっ、やめてください、石をぶつけられては…

投稿2020/04/28 21:34

take77

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pikari

2020/04/29 12:58

コメントありがとうございます!
pikari

2020/04/29 12:59

自分も、関数名の変更をやってみましたが上手くいきませんでした。
take77

2020/04/30 18:40

jun68yktさんのコード、読ませていただきました。 スタイルの当て方も気をつけなくてはいけませんね。 私も勉強になりました。質問を出してくださってありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問