如何将多个道具传递给React.createElement创建的元素?

时间:2018-10-29 09:31:10

标签: javascript reactjs

  

React.createElement(type,[props],[... children])

如反应文档所述。但是以某种方式,它不适用于我的多个道具。我试图传递一个键值对象数组,传递一个带有键值的容器对象,但是没有任何效果。让我展示一下我如何尝试的:

//input.js
const Input = ({name, elementProps}) => {
    const { element, props } = elementProps;
    return React.createElement(element, props)
}

export default Input;
//props from
{
    name: "msg",
    element: "textarea",
    props: [
        {placeholder: "Message"},
        {rows: "4"},
        {cols: "50"},
    ]
}
//rendered by method
const { name, ...elementProps } = objectAbove;
return <Input name={name} elementProps={elementProps} />

传递多个道具所需的语法是什么?

1 个答案:

答案 0 :(得分:4)

props应该是非数组对象,而不是数组。您正在创建的props数组看起来很容易成为单个对象,而不是对象数组。代替:

props: [
    {placeholder: "Message"},
    {rows: "4"},
    {cols: "50"},
]

也许

props: {
    placeholder: "Message",
    rows: "4",
    cols: "50"
}

Tholle中的a comment指出,the documentation的语法中显示的[]

React.createElement( type, [props], [...children] )

...旨在表明props是可选的,而不是它是一个数组。