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

问题描述 投票:0回答:1

我不明白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 >);
}

}

reactjs typescript sharepoint web-parts
1个回答
0
投票

请参阅文档,了解如何正确使用组件,组件可以接受的道具...

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

<TextField multiline rows={15} onChanged={this._onScriptEditorTextChanged.bind(this)} value={this.state.script} />
© www.soinside.com 2019 - 2024. All rights reserved.