簡體   English   中英

我正在嘗試用一個簡單的計數器做出反應。 在 console.log 中它可以完美運行,但在用戶界面中它不會更新計數器

[英]Am trying out react with a simple counter. Within the console.log it works perfectly but within the user interface it doesn't update the counter

我的 Trick.js 文件中有如下代碼:

let counter = 0;
const handlesclick = () => {
counter++;console.log("counter", counter)
Trick();
};
export default function Trick() {
return (
 <div>  
 <div>  
 <button onClick={handlesclick}>Increment counter</button>  
 </div>  
 <div>  
      counter value is {counter}  
 </div>  
 </div>  
  )  
}

它由 index.js 呈現:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import Jsx from './Jsx'
import Tools from './Tools';
import Trick from './Trick';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
    <Jsx />
    <Tools name="Ishmo" tool="Adobe"/>
    **<Trick />**
  </React.StrictMode>
);

控制台中的計數器工作正常,但在用戶界面上卻不行。 請幫幫我

首先,我建議閱讀React Docs

但是如果你想創建一個簡單的計數器,我會使用 React 提供的useState鈎子來構建它。 您的組件看起來像這樣。

export default function Trick() {
  const [counter, setCounter] = useState(0);
  const handlesClick = () => setCounter(counter + 1);
  return (
    <div>  
      <div>  
        <button onClick={handlesclick}>Increment counter</button>  
      </div>  
      <div>  
        counter value is {counter}  
      </div>  
    </div>  
  );
}

嘗試這個

import { useState } from "react";


export default function Trick() {

const [counter, setCounter] = useState(0);
const handlesclick = () => {
setCounter(counter + 1);
console.log("counter", counter)
};


return (
<div>  
<div>  
<button onClick={handlesclick}>Increment counter</button>  
</div>  
<div>  
  counter value is {counter}  
</div>  
</div>  
 )  
}

當前代碼的問題在於,盡管變量可能會自行更新,但第一次呈現的包含值 0 的頁面保持不變。 您要做的是在每次變量更改時觸發重新渲染,以便您可以“看到”頁面上的更新值。

您可以通過對功能組件使用 useState 掛鈎來實現此目的。 您可以在此處的官方文檔中閱讀有關它的更多信息。您可以參考文檔中的第一個示例,它是一個計數器應用程序。

暫無
暫無

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

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