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

如何不使用useMemo,用简单const实现目标数组且避免代码重复?

可行的实现方案

这里有几种满足你需求的写法,既不用useMemo,也避免重复写"el1":

1. 数组展开运算符(最简洁)

利用ES6的数组展开语法,根据条件决定是否追加元素:

const myResult = ["el1", ...(someCondition ? ["el2", "el3"] : [])];

当someCondition为真时,展开["el2", "el3"]拼接到原数组后;为假时展开空数组,结果就是["el1"]。

2. 定义基础数组再扩展

先单独定义基础数组,再根据条件生成最终结果:

const baseArr = ["el1"];
const myResult = someCondition ? [...baseArr, "el2", "el3"] : baseArr;

或者用concat方法:

const baseArr = ["el1"];
const myResult = someCondition ? baseArr.concat(["el2", "el3"]) : baseArr;

这种方式把固定元素抽离出来,逻辑更清晰,也避免了重复。

3. 立即执行函数表达式(IIFE,和原逻辑最一致)

把你之前写的函数变成立即执行的形式,直接得到数组而非函数:

const myResult = (() => {
  const arr = ["el1"];
  if (someCondition) {
    arr.push("el2", "el3");
  }
  return arr;
})();

这个写法和你原本useMemo里的逻辑几乎完全一样,只是每次渲染都会重新执行函数生成数组,符合你“逻辑简单可每次重新计算”的要求。

你并不是多虑,避免重复代码是合理的编码习惯,以上几种方案都能满足你的需求,可以根据实际场景选择最顺手的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:35:04