簡體   English   中英

React - JSX 中的渲染信息

[英]React - rendering information in JSX

我正在構建一個小費計算器。 我需要在 div 元素中呈現公式計算的結果。 如果將公式直接插入 div,它會起作用,但我相信在這種情況下我必須使用 useState。 這是我使用的代碼。 你能建議如何解決它嗎? 謝謝。

import React, { useState } from 'react';
import './Calculation.css';
import Card from './UI/Card';

const Calculation = (props) => {

    const [tipPP, setTipPP]=useState('0');
    const [totalPP, setTotalPP] = useState('0');
        
        const calcHandler =()=>{
            
            setTipPP(((props.bill * props.tip) / props.people)/100);
            setTotalPP(props.bill/props.people + tipPP)

        }
        

    return (
        <Card className='calcCard' onChange = {calcHandler}>
            <div className='calcTip' >Tip amount<span className='tipTotal' >${tipPP}</span></div>
            <div className='calcTotal'>Total<span>${totalPP}</span></div>
            <Card className='resetBtn'>Reset</Card>
        </Card>
    )
};

export default Calculation;

怎么樣 :

import React, { useState, useEffect } from 'react';
import './Calculation.css';
import Card from './UI/Card';

const Calculation = (props) => {

    const [tipPP, setTipPP]=useState('0');
    const [totalPP, setTotalPP] = useState('0');
        
        const calcHandler =(e)=>{
            e.preventDefault();
            setTipPP(((props.bill * props.tip) / props.people)/100);
            setTotalPP(props.bill/props.people + tipPP)

        }
        
     useEffect(() => {
         console.log("tipPP changed!");
     }, [tipPP]);

    return (
        <Card className='calcCard' onChange = {(e) => calcHandler()}>
            <div className='calcTip' >Tip amount<span className='tipTotal' >${tipPP}</span></div>
            <div className='calcTotal'>Total<span>${totalPP}</span></div>
            <Card className='resetBtn'>Reset</Card>
        </Card>
    )
};

export default Calculation;

useEffect 會在 tipPP 的值改變時重新渲染組件。 請試試這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM