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

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

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

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

React.js

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

Q&A

解決済

1回答

1571閲覧

Next.jsでモーダル実装時にonClickが反応しない

front

総合スコア12

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

React.js

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

0グッド

0クリップ

投稿2020/11/01 02:23

前提・実現したいこと

フロントエンドとバックエンドの勉強も兼ねてTODOアプリを作っている
todoリストの更新の際に下記挙動としたい

  • 更新ボタンクリック
  • 更新用のモーダルが出る
  • 値を入力
  • APIを叩き更新

発生している問題・エラーメッセージ

flagを持たせてモーダル表示までは完了している。
しかしモーダルUI内のonChangeやonClickが発火しないため、ロジックが組めない状況。

こちらの解消方法についてご教授いただきたい。

該当のソースコード

import Axios from 'axios'; import React, { useEffect, useState } from 'react'; const UI = () => { const ENDPOINT = 'http://0.0.0.0:8000/api/todos'; const [data, setdata] = useState([]); const [modalFlag, setModalFlag] = useState(false); const [changeTodo, setChangeTodo] = useState(''); // const fetchTodo = async () => { // await Axios.get(ENDPOINT) // .then((data) => { // console.log(data) // return data.data // }) // .catch((e) => console.log(e)) // } useEffect(() => { Axios.get(ENDPOINT) .then((data) => { setdata(data.data); }) .catch((e) => alert(e)); }, []); if (modalFlag) { return ( <> <div className="modal-overlay" onClick={() => { console.log('クリック'); setModalFlag(false); }} > <div className="bg-white box-border border-solid border-black border-2 p-2 z-10 w-2/4 form"> <div className="text-center">todoリストの更新</div> <div className="text-center"> <span>入力</span> <input type="text" className="box-border border-black border-1 bg-gray-200" onChange={(e: React.ChangeEvent<HTMLInputElement>) => { console.log(e.target.value); setChangeTodo(e.target.value); }} /> </div> <div className="text-center"> <button className="rounded-md bg-green-300 p-1" onClick={async () => { console.log('クリック'); await Axios.put(ENDPOINT, changeTodo).then(() => { setModalFlag(false); }); }} > 保存する </button> </div> </div> </div> <style jsx>{` .modal-overlay { z-index: 1; position: fixed; top: 0; left: 0; width: 100%; height: 120%; background-color: rgba(0, 0, 0, 0.75); } .form { margin: auto; } `}</style> </> ); } return ( <div> {data.map((data) => ( <div key={data.id}>{data.memo}</div> ))} <button className="rounded-md bg-green-300 p-1" onClick={() => { setModalFlag(true); }} > todoの更新ボタン </button> </div> ); }; export default UI;

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

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

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

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

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

guest

回答1

0

自己解決

dockerの立ち上げ直しをすることで動くように。
前回までのキャッシュなどが溜まっていた可能性あり

投稿2020/11/01 11:46

front

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問