You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何实现数组洗牌,点击按钮触发重新渲染生成随机单词按钮组

React随机单词按钮实现方案

核心实现逻辑如下:

  • 提前定义固定单词池,每次洗牌前先拷贝原数组,避免污染原始数据源
  • 把你提供的洗牌逻辑封装为独立工具函数,直接复用原有算法
  • 通过useState存储当前需要展示的两个随机单词
  • 组件初始化时生成第一组单词,点击任意按钮时重新生成单词更新state,触发页面重渲染

完整实现代码:

import { useState } from 'react';

// 固定单词池,不会被直接修改
const WORDS_POOL = [
  'monitor', 'program', 'application', 'keyboard',
  'javascript', 'gaming', 'network'
];

// 洗牌函数:输入数组返回打乱后的新数组
const shuffleArray = (arr) => {
  const newArr = [...arr];
  for (let i = newArr.length; --i;) {
    const j = Math.floor(Math.random() * (i + 1));
    [newArr[i], newArr[j]] = [newArr[j], newArr[i]];
  }
  return newArr;
};

// 生成2个随机单词
const getTwoRandomWords = () => {
  const shuffledWords = shuffleArray(WORDS_POOL);
  return [shuffledWords[0], shuffledWords[1]];
};

export default function RandomWordBtnGroup() {
  const [currentWords, setCurrentWords] = useState(getTwoRandomWords());

  // 点击任意按钮触发单词更新
  const handleBtnClick = () => {
    setCurrentWords(getTwoRandomWords());
  };

  return (
    <div style={{ display: 'flex', gap: '12px', padding: '20px' }}>
      <button 
        onClick={handleBtnClick}
        style={{ padding: '8px 16px', fontSize: '16px', cursor: 'pointer' }}
      >
        {currentWords[0]}
      </button>
      <button 
        onClick={handleBtnClick}
        style={{ padding: '8px 16px', fontSize: '16px', cursor: 'pointer' }}
      >
        {currentWords[1]}
      </button>
    </div>
  );
}

你可以自行调整按钮的样式代码,实现和参考示例一致的效果:
效果示例图

内容的提问来源于stack exchange,提问作者DangolBeeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:06:03