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

如何在React渲染逻辑中使用state变量word动态访问词典对象对应数据

问题原因&解决方法

  1. 变量访问对象属性的语法错误
    JavaScript中如果要用动态变量作为键读取对象属性,必须使用方括号语法,你尝试的$word/$`word` 写法都不符合JS语法规范,正确写法是data[word]。
  2. 数据结构访问路径错误
    你定义的data里每个单词的MEANINGS是对象类型,键为字符串"2",不是数组,所以不能直接写MEANINGS[0],需要先拿到MEANINGS['2']对应的释义数组,再按索引取对应字段。

修正后的渲染部分代码

return ( 
  <>
    <div>
      <label>Word</label>
      <input type="text" value={word} onChange={(e) => setWord(e.target.value.toUpperCase())} />
    </div>
    <div className="container pt-n5" >
      <div className="jumbotron d-flex justify-content-center " >
        <div>
          <b>当前查询单词:</b>{word} <br />
          <b>词性:</b>
          <p>{data[word]?.MEANINGS['2'][0]}</p>
          <b>释义:</b>   
          <p>{data[word]?.MEANINGS['2'][1]}</p>
          <b>近义词参考:</b>   
          <p>{data[word]?.MEANINGS['2'][2]?.join('、')}</p>
          <b>例句:</b>   
          <p>{data[word]?.MEANINGS['2'][3]?.join(';')}</p>
        </div>
      </div>
    </div>
  </>
);

补充:input的onChange事件加了toUpperCase()是因为你的data里所有单词键都是全大写格式,避免用户输入小写字母匹配不到数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:06:02