【问题标题】:Pass data parent to child将数据父级传递给子级
【发布时间】:2017-08-04 08:56:18
【问题描述】:

我无法根据选择的类型动态呈现选择的选项。有什么问题?

console.log 显示消息“true”但不收费的 HTML 元素

/*Call to component*/
<SelectContainer type={1}/>

/*Component*/
import React from 'react';
const SelectContainer = ({type}) => {
let option = [];

if (type === 1) {
    option.push = (<option value="#">asdf</option>)
    console.log("true"+option);        
}else if (type === 2) {
    option.push = (<option value="#">1</option>);        
    option.push = (<option value="#">2</option>);
    option.push = (<option value="#">3</option>);
    console.log("false"+option);
}else{
    console.log('nooo')
}
return (
    <select className="selectContainer">
        {option}
    </select>
);
}

export default SelectContainer;

【问题讨论】:

    标签: javascript reactjs ecmascript-6


    【解决方案1】:

    让我们尝试像这样更改您的代码:

    /*Call to component*/
    <SelectContainer type={1}/>
    
    /*Component*/
    import React from 'react';
    const SelectContainer = ({type}) => {
    let option = [];
    
    if (type === 1) {
        option.push(<option value="#" key={0}>asdf</option>)
        console.log("true"+option);        
    }else if (type === 2) {
        option.push(<option value="#" key={0}>1</option>);        
        option.push(<option value="#" key={1}>2</option>);
        option.push(<option value="#"key={2}>3</option>);
        console.log("false"+option);
    }else{
        console.log('nooo')
    }
    return (
        <select className="selectContainer">
            {option.map((item) => {
               return item
            })}
        </select>
    );
    }
    
    export default SelectContainer;
    

    你必须把你的变量放到map()函数,它会循环你的选项组件,别忘了使用key。如果你不设置它会显示一个警告,也许它可以帮助你:)

    【讨论】:

    • 一个问题 Rizal Sidik ,还有其他方法来做这个例子吗?例如...没有数组?
    • 为什么要映射,它也会返回一个数组
    【解决方案2】:

    由于您的option 变量是一个数组,您必须使用map 将其映射出来。像这样:

    { option.map(item =&gt; item) }

    另外你的.push 操作也不正确。

    应该是:option.push(&lt;option value="#"&gt;1&lt;/option&gt;);,而不是用=赋值。

    【讨论】:

    • 未找到 :-(
    • 更新了我的答案。您的 push 是对选项的分配,而不是推入数组。现在它按预期工作:)
    • 所以...如果不使用数组来“保存”各种 HTML 元素...我该怎么办?¿ 使用运算符“+”?
    猜你喜欢
    • 2020-09-22
    • 2021-06-29
    • 2011-09-07
    • 1970-01-01
    • 2018-03-09
    • 2016-11-14
    • 2023-03-13
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多