【问题标题】:Accessing variable by dynamic substring name - Alternative to eval()?通过动态子字符串名称访问变量 - 替代 eval()?
【发布时间】:2023-01-09 19:09:45
【问题描述】:

我有一些基本相同的元素,我正在尝试重构以使其更整洁。主要区别在于它们引用相似格式的不同变量。

例如:

(!editingTelephone && telephone === '') && 'No landline number added'}

(!editingMobile && mobile === '') && 'No mobile number added'

我希望能够将诸如“电话”或“移动”之类的字符串传递给一个函数,以构建将填充所有相关变量名称和内容的整个组件。

我的努力是动态构建变量名,以便它们正确调用......

我知道 eval() 在通过字符串构造变量名时可以使用,但我也知道从安全角度来看,这是被警告不要使用的......我只是想知道是否还有其他更安全的东西我可以使用,或者在这种情况下,从安全角度来看,在 React 中使用是否合适,因为我没有完全暴露任何重要的东西?

【问题讨论】:

  • 主要由"Variable" variables in JavaScript回答但是,我真的不明白你为什么要在这里做任何类型的动态变量,因为你有需要编辑的东西,不仅仅是mobiletelephone。也许只是创建一个函数 (editing, value, message) => (!editing && value === '') && message 然后将值提供给它。无需动态构建代码或尝试通过查找通过名称神奇地访问事物。

标签: javascript reactjs variables substring eval


【解决方案1】:

您需要将信息存储在其他一些对象中(默认情况下为窗口),然后:

const store = {mobile:undefined, phone:"001002003"}

function test(name) {
   console.log(store[name]);
}

//Test:
test("mobile") ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2022-04-26
    • 2012-05-02
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多