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

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

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

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

React.js

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

Recoil

Recoilは、Meta社が開発しているReactの状態管理ライブラリです。状態を管理するAtom、Atomに格納された状態を取得するSelectorという2つの主機能を持ちます。同じく状態管理ライブラリであるReduxと比べて構造が分かりやすく扱いやすい点が特徴です。

Q&A

0回答

110閲覧

React18でRecoilを使いたい

Tomo0225

総合スコア67

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

React.js

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

Recoil

Recoilは、Meta社が開発しているReactの状態管理ライブラリです。状態を管理するAtom、Atomに格納された状態を取得するSelectorという2つの主機能を持ちます。同じく状態管理ライブラリであるReduxと比べて構造が分かりやすく扱いやすい点が特徴です。

0グッド

0クリップ

投稿2023/09/25 14:01

Reactでアプリを作成しておりステータス管理にRecoilを使いたいです。
簡単なアプリを作ってみたのですが、index.tsxの14行目の<RecoilRoot>のとこりでエラーが発生してしまいました。
GitHubのこの記事(https://github.com/facebookexperimental/Recoil/issues/1717 )などをみるとバグがあるっぽいのですが、React18でRecoilを使っているところもあるようなので使えるようにしたいと思っています。
どのようにすればReact18でRecoilが使えるようになりますか。

npmlistreact

1root@5e90b19430ee:/usr/src# npm list react 2src@ /usr/src 3+-- react-redux@8.1.2 4| +-- react-dom@18.2.0 5| | `-- react@18.2.0 deduped 6| +-- react@18.2.0 7| `-- use-sync-external-store@1.2.0 8| `-- react@18.2.0 deduped 9+-- react-router-dom@6.16.0 10| +-- react-router@6.16.0 11| | `-- react@18.2.0 deduped 12| `-- react@18.2.0 deduped 13`-- recoil@0.7.7 14 `-- react@18.2.0 deduped
'RecoilRoot' を JSX コンポーネントとして使用することはできません。 Its type 'FC<RecoilRootProps>' is not a valid JSX element type. 型 'FunctionComponent<RecoilRootProps>' を型 '(props: any, deprecatedLegacyContext?: any) => ReactNode' に割り当てることはできません。 型 'import("d:/ddrive/Docker/PhotoAlbum/react/node_modules/@types/react/index").ReactNode' を型 'React.ReactNode' に割り当てることはできません。 型 'ReactElement<any, string | JSXElementConstructor<any>>' を型 'ReactNode' に割り当てることはできません。 プロパティ 'children' は型 'ReactElement<any, string | JSXElementConstructor<any>>' にありませんが、型 'ReactPortal' では必須です。ts(2786) index.d.ts(205, 9): 'children' はここで宣言されています。

index.tsx

1import React from 'react'; 2import ReactDOM from 'react-dom/client'; 3import './index.css'; 4import MainApp from './MainApp'; 5import reportWebVitals from './reportWebVitals'; 6import { RecoilRoot } from 'recoil'; 7 8 9const root = ReactDOM.createRoot( 10 document.getElementById('root') as HTMLElement 11); 12root.render( 13 <React.StrictMode> 14 <RecoilRoot> {/* RecoilRootでアプリケーション全体をラップ */} 15 <MainApp /> 16 </RecoilRoot> 17 </React.StrictMode> 18); 19 20reportWebVitals();

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

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

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

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

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

hoshi-takanori

2023/09/26 10:14

試しに create-reacp-app したものに recoil を追加したら <RecoilRoot> はエラーになりませんでしたけど。(Recoil 使ったことないのでちゃんと動くかは知りませんが…。)
Tomo0225

2023/09/27 11:40

検証いただきありがとうございます。 環境によってはこのコードで問題なく動くのですね。 となるとDockerコンテナの設定などに問題があるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問