我创建了自己的组件,如下:
import React, { Component, Fragment } from 'react';
import Checkbox from '@material-ui/core/Checkbox';
import clsx from 'clsx';
import { makeStyles } from '@material-ui/core/styles';
function StyledCheckbox(props) {
const classes = useStyles();
let iconClassName;
if (!props.status) {
iconClassName = classes.undoneIcon;
} else if (props.status == 1) {
iconClassName = classes.inProgressIcon;
} else if (props.status == 2) {
iconClassName = classes.checkedIcon;
} else if (props.status == 3) {
iconClassName = "taskStatusCheckboxCANCELED";
}
return (
<Checkbox
className={classes.root + " checklistTaskStyledCheckbox"}
checkedIcon={<span className={clsx(classes.icon, iconClassName)} />}
color="default"
icon={<span className={iconClassName} />}
{...props}
onChange={() => {
props.settaskstatus(props.message)
}}
/>
);
}
export default StyledCheckbox;
因此,如上所示,我需要传递在onChange eventListener中调用的settaskstatus函数。 这过去反应起来很简单,这里是前面显示的组件标记
<StyledCheckbox
status={this.state.status2}
message={this.props.message}
settaskstatus={this.setTaskStatus}
/>
但是现在我遇到了这个错误
backend.js:6警告:道具
settaskstatus
的值无效 标签。从元素中删除它,或者传递一个字符串或数字 保留在DOM中的值。有关详细信息,请参见 www.fb.me/react-attribute-behavior 跨度(由ForwardRef(ButtonBase)创建) 在ForwardRef(ButtonBase)中(由WithStyles(ForwardRef(ButtonBase)创建))
答案 0 :(得分:0)
我认为问题可能在于您正在向<Checkbox />
传递{... props},而props
包含settaskstatus
,这是一个自定义属性。
尝试将其删除,然后向下传递{... rest}。
答案 1 :(得分:0)
尝试将道具分解为rest
对象和settaskstatus
,如下所示:
import React, { Component, Fragment } from 'react';
import Checkbox from '@material-ui/core/Checkbox';
import clsx from 'clsx';
import { makeStyles } from '@material-ui/core/styles';
function StyledCheckbox(props) {
const classes = useStyles();
let iconClassName;
if (!props.status) {
iconClassName = classes.undoneIcon;
} else if (props.status == 1) {
iconClassName = classes.inProgressIcon;
} else if (props.status == 2) {
iconClassName = classes.checkedIcon;
} else if (props.status == 3) {
iconClassName = "taskStatusCheckboxCANCELED";
}
// See here:
const {settaskstatus, ...rest} = props;
// End see here :)
return (
<Checkbox
className={classes.root + " checklistTaskStyledCheckbox"}
checkedIcon={<span className={clsx(classes.icon, iconClassName)} />}
color="default"
icon={<span className={iconClassName} />}
{...rest}
onChange={() => {
settaskstatus(props.message)
}}
/>
);
}
export default StyledCheckbox;