Javascript 如何将中的字符串点符号转换为对象引用,而不是嵌套

Javascript 如何将中的字符串点符号转换为对象引用,而不是嵌套,javascript,string,object,notation,Javascript,String,Object,Notation,我在react中映射一个数组,以获得jsx和的列表,但每个元素都有自己的样式,与结果元素相匹配。如何将字符串名称转换为对象引用 render() { const elements = this.props.elements; console.log('render ' + this.props.selected) const elementList = elements.map(**elem** => ( < div key={elem} c

我在
react
中映射一个数组,以获得
jsx
的列表,但每个元素都有自己的样式,与结果元素相匹配。如何将字符串名称转换为对象引用

render() {

    const elements = this.props.elements;
    console.log('render ' + this.props.selected)
    const elementList = elements.map(**elem** => (
        < div key={elem} className={styles.Inputs} >
            <label className={styles.{**elem**}}>
                <span className={this.state.selected === elem ? styles.red : styles.gray}></span>
                <input
                    type="radio"
                    name="react-tips"
                    value={elem}
                    extra={this.state.selected}
                    checked={this.state.selected === elem}
                    onChange={this.handleOptionChange}
                    className="form-check-input"
                />
            </label>
        </div >
    ))
    return (
        <div>
            {elementList}
        </div>

    )
render(){
常量元素=this.props.elements;
console.log('render'+this.props.selected)
常量元素列表=元素。映射(**elem**=>(
)) 返回( {elementList} )
如果我误解了这个问题,希望这有助于告诉我


希望这有助于告诉我,如果我误解了这个问题

你可以这么做

<label className={styles[**elem**]}> 

您可以简单地执行此操作

<label className={styles[**elem**]}> 

如果要设置对象属性并动态获取值,可以使用[](第三个括号)而不是。(点)。在您的情况下,应该使用[](第三个括号)

<label className={styles[**elem**]}> 
如果您想使用loop(只是一个示例)动态地获取值,您可以这样获得它

let obj = {
  1: 'One',
  2: 'Two',
  3: 'Three'
}
for(let i = 1; i <= Object.keys(obj).length; i++) {
  console.log(obj[i]);
}
// Output
// 'One'
// 'Two'
// 'Three'

for(设i=1;i如果要设置对象属性并动态获取值,可以使用[](第三个括号)而不是。(点)。在您的情况下,应该是

<label className={styles[**elem**]}> 
如果您想使用loop(只是一个示例)动态地获取值,您可以这样获得它

let obj = {
  1: 'One',
  2: 'Two',
  3: 'Three'
}
for(let i = 1; i <= Object.keys(obj).length; i++) {
  console.log(obj[i]);
}
// Output
// 'One'
// 'Two'
// 'Three'

for(让i=1;i这个问题解决了伙计们。我只是使用标准的css导入文件来跳过css模块中的点符号,虽然不完美,但效果很好。谢谢大家

import React,{Component}来自'React';
从“./InputsRadio.module.css”导入样式;
导入“./styles.css”;
导出默认类列表扩展组件{
状态={
要素:[],
所选:空
}
状态={
};
handleOptionChange=事件=>{
这是我的国家({
所选:event.target.value
});
};
componentDidMount(){
const selected=this.props.selected;
这是我的国家({
已选:已选
});
}
render(){
常量元素=this.props.elements;
console.log('render'+this.props.selected)
常量elementList=elements.map(elem=>(
{console.log(样式[elem])} )) 返回( {elementList} ) } }

问题解决了。我只是使用标准的css导入文件跳过css模块中的点符号,虽然不完美,但效果很好。谢谢大家

import React,{Component}来自'React';
从“./InputsRadio.module.css”导入样式;
导入“./styles.css”;
导出默认类列表扩展组件{
状态={
要素:[],
所选:空
}
状态={
};
handleOptionChange=事件=>{
这是我的国家({
所选:event.target.value
});
};
componentDidMount(){
const selected=this.props.selected;
这是我的国家({
已选:已选
});
}
render(){
常量元素=this.props.elements;
console.log('render'+this.props.selected)
常量elementList=elements.map(elem=>(
{console.log(样式[elem])} )) 返回( {elementList} ) } }


Hi Luis,检查我的解决方案并让我知道这是否有帮助。内联样式对我无效,因为我使用的是伪符号(:before)。因此我正在实现css模块。Hi Luis,检查我的解决方案并让我知道这是否有帮助。内联样式对我无效,因为我使用的是伪符号(:before)。因此,我正在实现css模块。对不起,我没有工作,我在使用css模块。这是我的完整代码:Object的工作方式与我提到的完全相同,可能是你有不同的问题。对不起,我没有工作,我在使用css模块。这是我的完整代码:Object的工作方式与我提到的完全相同,可能是你有不同的问题。对不起,我没有工作e、 我在使用css模块这是我的完整代码:对不起,我不工作,我在使用css模块这是我的完整代码:对不起,我不工作,我没有使用内联样式,我在使用css模块。这是我的完整代码:github.com/luifo/input-radio-with-icon-react.git对不起,我不工作,我没有使用内联样式,我在使用css模块d、 以下是我的完整代码:github.com/luifo/input-radio-with-icon-react.git