TypeScript React onChanged:尝试在共享点中执行 Web 部件时出错

Posted

技术标签:

【中文标题】TypeScript React onChanged:尝试在共享点中执行 Web 部件时出错【英文标题】:TypeScript React onChanged: getting an error when trying to execute the web part in sharepoint 【发布时间】:2020-05-27 21:32:45 【问题描述】:

我不明白为什么onChanged 属性不起作用,它需要不同的参数吗?

private _onScriptEditorTextChanged(text: string) 
    this.setState( script: text );


public render(): React.ReactElement<IScriptEditorProps> 
    const viewMode = <span dangerouslySetInnerhtml= __html: this.state.script ></span>;

    return (
        <div >
            <div className=styles.scriptEditor>
                <div className=styles.container>
                    <div className=`ms-Grid-row pzl-bgColor-themeDark ms-fontColor-white $styles.row`>
                        <div className="ms-Grid-col ms-lg10 ms-xl8 ms-xlPush2 ms-lgPush1">
                            <span className="ms-font-xl ms-fontColor-white">this.props.title</span>
                            <p className="ms-font-l ms-fontColor-white"></p>
                            <DefaultButton description='Opens the snippet dialog' onClick=this._showDialog>Edit snippet</DefaultButton>
                        </div>
                    </div>
                </div>
            </div>
            <Dialog
                isOpen=this.state.showDialog
                type=DialogType.normal
                onDismiss=this._closeDialog
                title='Embed'
                subText='Paste your script, markup or embed code below. Note that scripts will only run in view mode.'
                isBlocking=true
                className='ScriptPart'
            >
                <TextField multiline rows=15 onChanged=this._onScriptEditorTextChanged value=this.state.script />
                <DialogFooter>
                    <PrimaryButton onClick=this._closeDialog>Save</PrimaryButton>
                    <DefaultButton onClick=this._cancelDialog>Cancel</DefaultButton>
                </DialogFooter>
                viewMode
            </Dialog>
        </div >);

【问题讨论】:

错误信息是什么? 您确定是onChanged 而不是onChange。您使用的是哪个 UI 库?确切的错误是什么? 我得到的错误是这个:Type ' multiline: true;行:数字; onChanged: (text: string) => void;值:任何; ' 不可分配给类型 'IntrinsicAttributes & ITextFieldProps & children?: ReactNode; '。类型'IntrinsicAttributes & ITextFieldProps & children?: ReactNode; 上不存在属性'onChanged' '.ts(2322) 我尝试将其更改为onChange,但我遇到了更多错误,所以我认为应该是onChanged 【参考方案1】:

查看文档如何正确使用组件,它接受哪些道具...

我认为它应该是 onChange,你需要绑定它,因为你在 onChange 函数中使用了“this”关键字:

<TextField multiline rows=15 onChanged=this._onScriptEditorTextChanged.bind(this) value=this.state.script />

【讨论】:

以上是关于TypeScript React onChanged:尝试在共享点中执行 Web 部件时出错的主要内容,如果未能解决你的问题,请参考以下文章

Typescript React <Select> onChange 处理程序类型错误

TypeScript React onChanged:尝试在共享点中执行 Web 部件时出错

输入 onChange w/ React & TypeScript 错误:jsx no-lambda no-bind

React Typescript 故事书使用 onChange callBack 然后 setState 值 backTo Input 实现自定义 Input 组件

typesafe 使用 reactjs 和 typescript 选择 onChange 事件

Typescript 和 React:使用 React.Component 和条件类型化道具时类型推断失败