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

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

新規登録して質問してみよう
ただいま回答率
85.46%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

Q&A

解決済

1回答

1337閲覧

【TypeScript】useContextを使用した値の受け渡し

mii--

総合スコア59

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

0グッド

0クリップ

投稿2021/12/08 05:27

こんにちは。TypeScript初心者です。

Index.tsxファイルのtitleの値をArticleProvider.tsxファイル内のarticleDataに
渡したいのですがうまくいきません。。

Type '{}' is not assignable to type 'string'.
というエラーに悩まされています。
このエラーが発生する理由や解決方法がわかる方教えてください。お願いします!

Index.tsx const { articleData, setArticleData } = useContext(ArticleContext); const [title, setTitle] = useState({}); function handleChange(event: React.ChangeEvent<HTMLSelectElement>) { event.preventDefault(); setTitle({ title: event.target.value }); console.log(event.target.value); } const handleSubmit = useCallback(() => { // ↓ここでType '{}' is not assignable to type 'string'.が出ます。 setArticleData({ title: title }); console.log(`${JSON.stringify(articleData)}`); console.log(`${articleData}`); createArticle(); onClose(); }, []);
ArticleProvider.tsx import React, { createContext, Dispatch, SetStateAction, useState, ReactNode, } from 'react'; import { Article } from '../types/api/article'; type ArticleContextType = { articleData: Article | null; setArticleData: Dispatch<SetStateAction<Article | null>>; }; export const ArticleContext = createContext<ArticleContextType>( {} as ArticleContextType ); export const ArticleProvider = (props: { children: ReactNode }) => { const { children } = props; const [articleData, setArticleData] = useState<Article | null>({}); return ( <ArticleContext.Provider value={{ articleData, setArticleData }}> {children} </ArticleContext.Provider> ); };
resources\ts\types\api\article.ts export type Article = { id: number; title?: string; content: string; picture1?: string; picture2?: string; picture3?: string; picture4?: string; picture5?: string; pin_flg?: number; delete_flg?: number; created_at?: string; updated_at?: string; };

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージのとおりです。

上のsetStatetitle{}を入れていますが、これはArticleが要求するtitle?: stringと合致しません。

投稿2021/12/08 05:40

maisumakun

総合スコア145208

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

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

mii--

2021/12/08 07:45

ありがとうございます。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問