reactjs - 如何使用条件和 React Hooks 设置随机初始状态?

标签 reactjs state react-hooks

此示例模拟抛硬币。
我想随机化硬币的初始状态。第一次加载页面时,它可能会显示头部。下次,尾部。为此,我使用 Math 方法生成的随机数和条件来根据随机数确定硬币的面(偶数显示正面,奇数显示反面)。
该值需要在初始渲染时显示。

我还想使用 React 的 Hooks 将值存储在状态中,以便稍后在我的应用程序中使用。如何使用钩子(Hook)设置随机初始状态值?

这是我正在使用的代码。它目前无法运行,我不确定我做错了什么来实现我的目标:

import React, { useState } from 'react';
import './App.css';

function App() {

  const [coin, setCoin] = useState(randomizePlayer())

  const randomizePlayer = () => {
    let number = Math.floor(Math.random() * 10) + 1
    return (number % 2 === 0) ? setCoin('Heads') : setCoin('Tails')
  }

    return (
      <div className="App">
        The coin is showing {coin}
      </div>
    );
  }

export default App;

我是 Hooks API 的新手,正在使用此练习来学习。

感谢任何帮助!

最佳答案

我将重写此代码如下:

const randomizePlayer = () => {
  const number = Math.floor(Math.random() * 10) + 1
  return (number % 2 === 0) ? 'Heads' : 'Tails'
}

function App() {
  const [coin, setCoin] = useState(randomizePlayer())

  return (
    <div className="App">
      The coin is showing {coin}
    </div>
  );
}

randomizePlayer不需要调用setState;让它只返回一个值。 useState 可以使用该值作为其初始状态。

还要澄清一下:useState 仅被调用一次。如果您希望 coin 具有不同的值,则通过此设置实现此目的的方法是重新安装组件(重新加载页面)。

State hooks docs

关于reactjs - 如何使用条件和 React Hooks 设置随机初始状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716680/

相关文章:

javascript - 在 Jasmine 测试中更新 React 组件状态

javascript - 将 prevstate 参数添加到 this.setState 会导致 typeError

reactjs - 尽管依赖项没有变化,useEffect 仍运行无限循环

javascript - Material-UI 对话框样式操作按钮

javascript - BrowserHistory (react-router v4) 返回 404 并且 historyApiFallback 不工作

reactjs - 当父状态改变时组件卸载

javascript - AngularJS 用户界面路由器 : Route conflict because of optional parameter

javascript - 对 redux reducer 中的数组进行多次更新

reactjs - React 库中的 React hooks 给出无效的 hook 调用错误

javascript - React+gsap 使用随机动画元素组完成后无法工作?