お世話になっています。
下記の質問についてご教示を願います。
【質問の主旨】
ReactとDeepLのAPIを使って翻訳アプリを作っています。ホーム画面(App.js)でピンク色で囲っているTextBoxコンポーネントをクリックするとモーダル画面(Modal.js)に移動して、翻訳の対象となる原文の言語を選べる仕組みになっています。
(ホーム画面)
このモーダル画面で選んだ言語が、ホーム画面で反映されるようようにするためには、App.jsをどのように書き換えれば良いでしょうか?
(モーダル画面)
【質問の補足】
ここまで自分が作成したApp.js と Modal.jsのコードは以下の通りです。
1. App.js
import TextBox from "./components/TextBox"; import Arrows from "./components/Arrows"; import Button from "./components/Button"; import Modal from "./components/Modal"; import { useState } from "react"; const App = () => { const [showModal, setShowModal] = useState(null); const [inputLanguage, setInputLanguage] = useState("EN"); const [outputLanguage, setOutputLanguage] = useState("JA"); const handleClick = () => { setInputLanguage(outputLanguage); setOutputLanguage(inputLanguage); } return ( <div className="app"> {!showModal && <> <TextBox selectedLanguage={inputLanguage} style="input" setShowModal={setShowModal} /> <div className="arrow-container" onClick={handleClick}> <Arrows /> </div> <TextBox selectedLanguage={outputLanguage} style="output" setShowModal={setShowModal} /> </>} {showModal && <Modal setShowModal={setShowModal} chosenLanguage={showModal === "input" ? inputLanguage : outputLanguage} setChosenLanguage={showModal === "input" ? setInputLanguage : setOutputLanguage} />} </div> ); } export default App;
2. Modal.js
import { useState } from "react"; const Modal = ({ setShowModal, chosenLanguage, setChosenLanguage }) => { const [selectedOption, setSelectedOption] = useState(""); const handleSelectedChange = (e) => { setSelectedOption(e.target.value); } console.log(selectedOption); return ( <div className="option-list"> <div className="search-bar"> <select className="source-language" value={selectedOption} onChange={handleSelectedChange} > <option value="BG">BG</option> <option value="CS">CS</option> <option value="DA">DA</option> <option value="DE">DE</option> <option value="EL">EL</option> <option value="EN">EN</option> <option value="ES">ES</option> <option value="ET">ET</option> <option value="FI">FI</option> <option value="FR">FR</option> <option value="HU">HU</option> <option value="ID">ID</option> <option value="IT">IT</option> <option value="JA">JA</option> <option value="KO">KO</option> <option value="LT">LT</option> <option value="LV">LV</option> <option value="NB">NB</option> <option value="NL">NL</option> <option value="PL">PL</option> <option value="PT">PT</option> <option value="RO">RO</option> <option value="RU">RU</option> <option value="SK">SK</option> </select> <div className="close-button" onClick={() => setShowModal(null)}> <svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" > <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path> </svg> </div> </div> </div> ) } export default Modal;
—
以上、よろしくお願い申し上げます。
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/27 06:17