Javascript &引用;TypeError:this.context.“getProps不是函数”;尝试通过道具传递元素时。子对象
我试图通过props.children属性(通过将元素放置在组件的开始标记和结束标记之间)将dialogBody元素传递给子组件 但在使用props.children属性获取该元素并将其进一步传递给库组件(@material ui/core/DialogContent)时。我得到一个错误“TypeError:this.context.\u 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
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;