亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從輔助文件修改反應useState

如何從輔助文件修改反應useState

白豬掌柜的 2022-11-27 16:36:26
我是新手,目前正在嘗試從另一個文件修改 useState 掛鉤。當“Options.tsx”中的一個單選按鈕被選中時,結果應該以某種方式使用 useState 掛鉤的 setResult 函數進行更新,以便標簽得到更新。我想我幾乎明白了,但我沒有設法將正確的“onSelect”屬性傳遞給 Options.tsx,所以它被更新了。到目前為止,這是我的代碼:應用程序.tsximport React from 'react';import './App.css';import { useState } from 'react';import { Result, ResultType } from './Result'import { Options } from './Options'function App() {    const [result, setResult] = useState<ResultType>('pending')    return (        <div className="App">            <header className="App-header">                <Options onSelect={props.onSelect} />                <Result result={result} />            </header>        </div>    );}export default App;選項.tsximport React from 'react'interface Props {    onSelect: (correct: boolean) => void}export const Options = ({onSelect}: Props) => {    // TODO    const setWrong = () => setResult('wrong');    const setCorrect = () => setResult('correct');    return(        <div>            <fieldset>                <input type='radio' id='option1' onSelect={setWrong}/>                <label htmlFor='option1'>Label 1</label>                <input type='radio' id='option2' onSelect={setCorrect}/>                <label htmlFor='option2'>Label 2</label>                <input type='radio' id='option3' onSelect={setCorrect}/>                <label htmlFor='option3'>Label 3</label>            </fieldset>        </div>    )}Result.tsx(只是為了完成 - 到目前為止工作正常)import React from 'react'export type ResultType = 'pending' | 'correct' | 'wrong'interface Props {    result: ResultType}export const Result = ({ result }: Props) => {    switch (result) {        case 'pending':            return <h2>Make a guess</h2>        case 'correct':            return <h2>Yay, good guess!</h2>        case 'wrong':            return <h2>Nope, wrong choice...</h2>    }}知道嗎,如何從 Options.tsx 更新 useState?先感謝您!
查看完整描述

3 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

這非常簡單 - 您只需要通過屬性將 setter 傳播到選項。

<Options setResult={setResult} />

或者,根據情況提供您自己的使用 setResult 的方法。

我會注意到您當前傳遞給 onSelect 的值似乎綁定到不正確的值。Typescript 編譯器可能在抱怨它?


查看完整回答
反對 回復 2022-11-27
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

您可以將更新程序功能傳遞給選項組件:

<Options setResult={setResult} />

然后在您的選項組件中,您可以使用

props.setResult('blah')


查看完整回答
反對 回復 2022-11-27
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

只需將setResultprop 傳遞給 Options 組件即可。


應用程序.tsx:


function App() {

    const [result, setResult] = useState<ResultType>('pending')


    return (

        <div className="App">

            <header className="App-header">

                <Options onSelect={props.onSelect} setResult={setResult} />


                <Result result={result} />

            </header>

        </div>

    );

}

選項.tsx:


export const Options = ({onSelect, setResult}: Props) => {

    const setWrong = () => setResult('wrong');

    const setCorrect = () => setResult('correct');

    ...

}


查看完整回答
反對 回復 2022-11-27
  • 3 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號