Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 将函数传递给子组件_Javascript_Reactjs_Typescript_Spfx_Office Fabric - Fatal编程技术网

Javascript 将函数传递给子组件

Javascript 将函数传递给子组件,javascript,reactjs,typescript,spfx,office-fabric,Javascript,Reactjs,Typescript,Spfx,Office Fabric,我正在创建一个简单的SPFX扩展来管理任务列表。我创建了一个列表,它通过pnpjs通过REST获取项目 我希望能够通过点击按钮删除上述项目。当我点击删除按钮时,一个模式(WarningModal)打开,要求确认。我已经成功地创建了一个有效的示例,但我很难理解它为什么有效。当我试图遵循官方文档()中的指南时,我的代码无法正常工作 父组件中的渲染方法: public render = (): React.ReactElement<ITakenbeheerProps> => { co

我正在创建一个简单的SPFX扩展来管理任务列表。我创建了一个列表,它通过pnpjs通过REST获取项目

我希望能够通过点击按钮删除上述项目。当我点击删除按钮时,一个模式(WarningModal)打开,要求确认。我已经成功地创建了一个有效的示例,但我很难理解它为什么有效。当我试图遵循官方文档()中的指南时,我的代码无法正常工作

父组件中的渲染方法:

public render = (): React.ReactElement<ITakenbeheerProps> => {
const {
  taken,
  showErrorMessage,
  errorMessage,
  showSuccessMessage,
  successMessage,
  isDataLoaded,
  showTryAgainButton,
  showDeleteModal,
  deleteModalTitle,
  deleteModalContent,
  deleteModalOkCallback,
  deleteModalCancelCallback,
} = this.state;
const { ShimmerCollection } = this;
let AssignTaskModal = this.AssignTaskModal;
let addTaskIcon: IIconProps = { iconName: "AddToShoppingList" };

return (
  <Stack
    tokens={this.verticalGapStackTokens}
    className={styles.takenBeheer}
  >
    <ActionButton iconProps={addTaskIcon}>
      {strings.NieuweTaakButton}
    </ActionButton>

    {showErrorMessage ? (
      <MessageBar
        messageBarType={MessageBarType.error}
        isMultiline={false}
        onDismiss={this.onResetAllMessageBars}
      >
        {errorMessage}
      </MessageBar>
    ) : null}

    {showSuccessMessage ? (
      <MessageBar
        messageBarType={MessageBarType.success}
        isMultiline={false}
        onDismiss={this.onResetAllMessageBars}
      >
        {successMessage}
      </MessageBar>
    ) : null}

    <Stack horizontalAlign={"center"}>
      {showTryAgainButton && (
        <PrimaryButton
          text={strings.TryAgain}
          onClick={this._populateList}
        />
      )}
    </Stack>

    <ShimmerCollection />

    {isDataLoaded ? (
      <div>
        {taken.findIndex((t) => t.toegewezenAan.name == null) > -1 ? (
          <List
            items={taken.filter((t) => {
              return t.toegewezenAan.name == null;
            })}
            onRenderCell={this.onRenderCell}
          />
        ) : (
          <div className={styles.noNewTasks}>{strings.NoNewTasks}</div>
        )}
      </div>
    ) : null}

    <AssignTaskModal />
    <WarningModal
      isModalOpen={showDeleteModal}
      title={deleteModalTitle}
      content={deleteModalContent}
      okCallback={deleteModalOkCallback}
      cancelCallback={deleteModalCancelCallback}
    />
  </Stack>
);};
public render=():React.ReactElement=>{
常数{
拿,
这是一条信息,
错误消息,
展示成功信息,
成功消息,
已加载,
showTryAgainButton,
showdeletemodel,
DeleteModaltle,
删除ModalContent,
deleteModalOkCallback,
DeleteModalCancelBack,
}=本州;
常量{shimercollection}=此;
让AssignTaskModal=this.AssignTaskModal;
让addTaskIcon:IIconProps={iconName:“AddToShoppingList”};
返回(

import*as React from“React”;
将*作为字符串从“CicOvlTakenlijstWebPartStrings”导入;
进口{
情态动词
对话框页脚,
默认按钮,
按钮
格瑟姆,
合并样式集,
方特权重,
}从“office ui fabric react”;
/*道具定义*/
导出接口IWarningModalProps{
isModalOpen:布尔型;
标题:字符串;
内容:字符串;
奥克:任何;
取消回调:任何;
}
/*国家定义*/
导出接口IWarningModalState{}
导出默认类WarningModal扩展React.Component<
我警告莫达尔普罗斯,
IWarningModalState
> {
公共构造函数(道具:IWarningModalProps){
超级(道具);
此.state={
/*状态初始化*/
伊斯莫达洛彭:错,
};
}
public render():React.ReactElement{
常数{
伊斯莫达洛本,
好的,
取消回调,
标题
内容,,
}=这是道具;
返回(
{title}
{content}
);
}
}
为什么这样做?我希望警告模式中的代码如下,带有箭头功能:

<DialogFooter>
            <DefaultButton onClick={() => okCallback()} text={strings.OkMessage} />
            <Button onClick={() => cancelCallback()} text={strings.CancelMessage} />
</DialogFooter>

okCallback()}text={strings.OkMessage}/>
cancelCallback()}text={strings.CancelMessage}/>

但是,当我单击按钮时,什么也没有发生。调试器也不会显示任何错误消息。

工作代码和非工作代码之间的唯一区别是目标函数中的“this.”等于什么。如果您可以发布完整的示例(包括“deleteModalOkCallback”的代码),可能会说得更多。我猜它会检查此字段是否丢失(在“this.”中),在这种情况下不会执行任何操作。请注意,通常建议使用bind(this)。
<DialogFooter>
            <DefaultButton onClick={() => okCallback()} text={strings.OkMessage} />
            <Button onClick={() => cancelCallback()} text={strings.CancelMessage} />
</DialogFooter>