【问题标题】:Material-ui component is not rendering in react class based component?Material-ui 组件没有在基于反应类的组件中呈现?
【发布时间】:2022-01-27 21:21:54
【问题描述】:

Material-ui 组件未在基于 React 类的组件中呈现? 我正在尝试在基于类的组件中转换基于函数的 material-ui 组件,但基于类的组件未呈现...在主 div 中检查主 div 未显示该组件? 知道如何将 material-ui 与基于类的组件一起使用吗?

enter code here   


 import * as React from 'react';
    import Box from '@mui/material/Box';
    import Tabs from '@mui/material/Tabs';
    import Tab from '@mui/material/Tab';

    function LinkTab(props) {
        return (
          <Tab
            component="a"
            onClick={(event) => {
              event.preventDefault();
            }}
            {...props}
          />
        );
      }

    class Header extends Component {
      constructor(props) {
        super(props);
        this.state = {
          value: 0,
        };
      }

      handleChange = (event, newValue) => {
        this.setState(
          (prevState) => (
            {
              value: newValue,
            },
            () => {
              console.log("value", this.state.newValue);
            }
          )
        );
      };

      render() {
        return (
            <Box sx={{ width: '100%' }}>
              <Tabs value={this.state.value} onChange={this.handleChange()} aria-label="nav tabs example">
                <LinkTab label="Page One" href="/drafts" />
                <LinkTab label="Page Two" href="/trash" />
                <LinkTab label="Page Three" href="/spam" />
              </Tabs>
            </Box>
          );
      }
    }

    export default Header;







    import * as React from 'react';
    import Box from '@mui/material/Box';
    import Tabs from '@mui/material/Tabs';
    import Tab from '@mui/material/Tab';

    function LinkTab(props) {
      return (
        <Tab
          component="a"
          onClick={(event) => {
            event.preventDefault();
          }}
          {...props}
        />
      );
    }

    export default function header() {
      const [value, setValue] = React.useState(0);

      const handleChange = (event, newValue) => {
        setValue(newValue);
      };

      return (
        <Box sx={{ width: '100%' }}>
          <Tabs value={value} onChange={handleChange} aria-label="nav tabs example">
            <LinkTab label="Page One" href="/drafts" />
            <LinkTab label="Page Two" href="/trash" />
            <LinkTab label="Page Three" href="/spam" />
          </Tabs>
        </Box>
      );
    }

【问题讨论】:

  • 我只看到一个错误是它应该是onChange={this.handleChange} 而不是onChange={this.handleChange()}
  • 还是不行

标签: reactjs material-ui react-class-based-component


【解决方案1】:
  1. 替换
<Tabs value={this.state.value} onChange={this.handleChange()}

通过

<Tabs value={this.state.value} onChange={this.handleChange}
  1. 替换
handleChange = (event, newValue) => {
  this.setState(
    (prevState) => (
      {
        value: newValue,
      },
      () => {
        console.log("value", this.state.newValue);
      }
    )
  );
};

通过

handleChange = (event, newValue) => {
  this.setState(
    {value: newValue},
    () => {
      console.log("value", this.state.newValue);
    }
  );
};

【讨论】:

  • 还是不行
  • 控制台有错误吗?
  • 谢谢@Olivier Boisse,我在控制台中遇到了一些其他错误......我刚刚从 react-native 再次转移反应,所以我忘记了我们必须检查控制台中的错误...... ..因为在本地反应中场景不同。你的第一个答案是正确的
猜你喜欢
  • 1970-01-01
  • 2018-07-23
  • 2020-09-07
  • 1970-01-01
  • 2017-08-20
  • 2017-05-12
  • 2020-02-05
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多