Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在react中分配新属性,获得'Can';t添加属性xxx,对象不可扩展`_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 无法在react中分配新属性,获得'Can';t添加属性xxx,对象不可扩展`

Javascript 无法在react中分配新属性,获得'Can';t添加属性xxx,对象不可扩展`,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我想制作一个用于提交表单的对话框组件 代码 类SubmitDialog扩展了React.PureComponent{ 切换对话框(){ this.setState({isOpen:!this.state.isOpen}) } handleSubmit(){ //孩子们需要有一个把手 this.props.children.props.handleSubmit() this.toggleDialog() } render(){ const{children,title}=this.props; /

我想制作一个用于提交表单的对话框组件

代码
类SubmitDialog扩展了React.PureComponent{
切换对话框(){
this.setState({isOpen:!this.state.isOpen})
}
handleSubmit(){
//孩子们需要有一个把手
this.props.children.props.handleSubmit()
this.toggleDialog()
}
render(){
const{children,title}=this.props;
//我想传递一个按钮来触发打开此对话框
let trigger=React.cloneElement(this.props.trigger);
trigger.onClick=this.toggleDialog;
返回(
{trigger},
{this.toggleDialog()}}
className=“对话框”
>
{title}
{儿童}
{this.toggleDialog()}}>取消
{this.handleSubmit()}}>提交
)
}
};
目的 我想通过考试

  • 一个具有无手柄Sumbit功能的窗体(子级)
  • 打开此对话框(触发器)的可单击元素
  • 因为外部组件不知道如何打开这个对话框,所以我倾向于将元素传递到对话框中,并让对话框向其传递onClick函数。 但是我发现我无法将set属性添加到
    this.props.trigger
    。我试图添加
    React.cloneElement
    ,但仍然不起作用

    已尝试
    对象。密封件
    :
    试试:

    React.cloneElement(this.props.trigger, {
            onClick: this.toggleDialog
    });
    
    尝试:


    也许你需要使用这个.toggleDialog.bind(这个)也许你需要使用这个.toggleDialog.bind(这个)
    Object.seal
    会很好地密封这个对象,之后就不能更改/创建它的属性了。。TypeScript知道这一点,并返回原始对象的
    只读
    ,因此为什么会出现编译时错误。如果TypeScript没有抛出此错误,则会出现运行时错误。
    Object.seal
    将密封该对象,之后无法更改/创建该对象的属性等。。TypeScript知道这一点,并返回原始对象的
    只读
    ,因此为什么会出现编译时错误。如果TypeScript没有抛出此错误,您将得到运行时错误。
    React.cloneElement(this.props.trigger, {
            onClick: this.toggleDialog
    });