Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 &引用;TypeError:this.context.“getProps不是函数”;尝试通过道具传递元素时。子对象_Javascript_Reactjs_React Redux_React Hooks_Material Ui - Fatal编程技术网

Javascript &引用;TypeError:this.context.“getProps不是函数”;尝试通过道具传递元素时。子对象

Javascript &引用;TypeError:this.context.“getProps不是函数”;尝试通过道具传递元素时。子对象,javascript,reactjs,react-redux,react-hooks,material-ui,Javascript,Reactjs,React Redux,React Hooks,Material Ui,我试图通过props.children属性(通过将元素放置在组件的开始标记和结束标记之间)将dialogBody元素传递给子组件 但在使用props.children属性获取该元素并将其进一步传递给库组件(@material ui/core/DialogContent)时。我得到一个错误“TypeError:this.context.\u getProps不是函数” const dialogBody=( 描述 ); 返回( {dialogBody} ); 对话框视图组件: import Rea

我试图通过props.children属性(通过将元素放置在组件的开始标记和结束标记之间)将dialogBody元素传递给子组件

但在使用props.children属性获取该元素并将其进一步传递给库组件(@material ui/core/DialogContent)时。我得到一个错误“TypeError:this.context.\u getProps不是函数”

const dialogBody=(
描述
);
返回(
{dialogBody}
);
对话框视图组件:

import React from "react";
import Dialog from "@material-ui/core/Dialog";
import DialogContent from "@material-ui/core/DialogContent";
import DialogTitle from "@material-ui/core/DialogTitle";
import DialogActions from "@material-ui/core/DialogActions";
import _ from "lodash";

import MaterialButtonsView from "./material-buttons-view";

const DialogView = (props) => {
  const handleRequestOnClose = () => {
    props.onClose();
  };

  const handleButtonClick = (buttonId, event) => {
    if(_.isFunction(props.buttonClickHandler)){
        props.buttonClickHandler(buttonId, event);
      }
  }
   
  const dialogTitle = _.isEmpty(props.title) ? null : (
    <DialogTitle
      className="customDialogTitle"
      disableTypography={true}
    >
      {props.title}
    </DialogTitle>
  );

  let dialogButtons = [];
  _.forEach(props.buttonsData, (button) => {
    const isDisabled = !button.isNotActive ? false : true;
    dialogButtons.push(<MaterialButtonsView
        key={button.id}
        label={button.label}
        onButtonClick={handleButtonClick.bind(this, button.id)}/>);
  });


  dialogButtons = !_.isEmpty(dialogButtons) ? <DialogActions>{dialogButtons}</DialogActions>: null;
    
  return (
    <Dialog
      disableBackdropClick={props.modal}
      open={props.open || false}
      onClose={handleRequestOnClose}
      actions={dialogButtons}
      disableEscapeKeyDown={false}
    >
      {dialogTitle}
      <DialogContent
      >
        {props.children} //Problematic code
      </DialogContent>
      {dialogButtons}
    </Dialog>
  );
};

export default DialogView;
从“React”导入React;
从“@material ui/core/Dialog”导入对话框;
从“@material ui/core/DialogContent”导入DialogContent;
从“@material ui/core/DialogTitle”导入DialogTitle;
从“@material ui/core/DialogActions”导入DialogActions;
从“洛达斯”进口;
从“/material buttons视图”导入MaterialButtons视图;
const DialogView=(道具)=>{
常量handleRequestOnClose=()=>{
props.onClose();
};
const handleButtonClick=(按钮,事件)=>{
if(uu.isFunction(props.buttonClickHandler)){
道具。纽特利克坎德勒(纽特尼,事件);
}
}
const dialogTitle=u.isEmpty(props.title)?null:(
{props.title}
);
让dialogButtons=[];
_.forEach(props.buttonsData,(按钮)=>{
const isDisabled=!button.isNotActive?false:true;
dialogButtons.push();
});
dialogButtons=!\ i.isEmpty(dialogButtons){dialogButtons}:空;
返回(
{dialogTitle}
{props.children}//有问题的代码
{对话框按钮}
);
};
导出默认对话框视图;

在dialogBody中,我使用了“react validation/build/Input”中的输入库,我删除了它并使用了html输入,现在它工作正常。但我仍然想知道我如何使用那个图书馆。
import React from "react";
import Dialog from "@material-ui/core/Dialog";
import DialogContent from "@material-ui/core/DialogContent";
import DialogTitle from "@material-ui/core/DialogTitle";
import DialogActions from "@material-ui/core/DialogActions";
import _ from "lodash";

import MaterialButtonsView from "./material-buttons-view";

const DialogView = (props) => {
  const handleRequestOnClose = () => {
    props.onClose();
  };

  const handleButtonClick = (buttonId, event) => {
    if(_.isFunction(props.buttonClickHandler)){
        props.buttonClickHandler(buttonId, event);
      }
  }
   
  const dialogTitle = _.isEmpty(props.title) ? null : (
    <DialogTitle
      className="customDialogTitle"
      disableTypography={true}
    >
      {props.title}
    </DialogTitle>
  );

  let dialogButtons = [];
  _.forEach(props.buttonsData, (button) => {
    const isDisabled = !button.isNotActive ? false : true;
    dialogButtons.push(<MaterialButtonsView
        key={button.id}
        label={button.label}
        onButtonClick={handleButtonClick.bind(this, button.id)}/>);
  });


  dialogButtons = !_.isEmpty(dialogButtons) ? <DialogActions>{dialogButtons}</DialogActions>: null;
    
  return (
    <Dialog
      disableBackdropClick={props.modal}
      open={props.open || false}
      onClose={handleRequestOnClose}
      actions={dialogButtons}
      disableEscapeKeyDown={false}
    >
      {dialogTitle}
      <DialogContent
      >
        {props.children} //Problematic code
      </DialogContent>
      {dialogButtons}
    </Dialog>
  );
};

export default DialogView;