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 在我的一个组件中使用钩子的MaterialUI实现calander_Javascript_Reactjs - Fatal编程技术网

Javascript 在我的一个组件中使用钩子的MaterialUI实现calander

Javascript 在我的一个组件中使用钩子的MaterialUI实现calander,javascript,reactjs,Javascript,Reactjs,一般来说,我对React和JavaScript都是新手,并尝试在web应用程序上使用。我想实现一个从Material UI中找到的calandar选择器 在《开始指南》中,它使用挂钩制作日历,但似乎我无法在组件中使用挂钩 我试着把函数移出我的类并在类中调用它,但是我得到了同样的错误,所以我猜这是不行的 class GameList extends Component { state = {}; render() { const { classes } = this.props;

一般来说,我对React和JavaScript都是新手,并尝试在web应用程序上使用。我想实现一个从Material UI中找到的calandar选择器

在《开始指南》中,它使用挂钩制作日历,但似乎我无法在组件中使用挂钩

我试着把函数移出我的类并在类中调用它,但是我得到了同样的错误,所以我猜这是不行的

class GameList extends Component {
  state = {};

  render() {
    const { classes } = this.props;
    return (
      <div id="gameList">
        {BasicDatePicker()}
      </div>
    );
  }
}

export function BasicDatePicker(){
  const [selectedDate, handleDateChange] = useState(new Date());

  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
      <DatePicker
        label="Basic example"
        value={selectedDate}
        onChange={handleDateChange}
        animateYearScrolling
      />
      </MuiPickersUtilsProvider>
  );
}

export default (GameList);


类游戏列表扩展组件{
状态={};
render(){
const{classes}=this.props;
返回(
{BasicDatePicker()}
);
}
}
导出函数BasicDatePicker(){
const[selectedDate,handleDateChange]=useState(新日期());
返回(
);
}
导出默认值(游戏列表);
我收到的错误如下: “钩子调用无效。钩子只能在函数组件的主体内部调用。发生这种情况的原因如下: 1.React和渲染器的版本可能不匹配(例如React DOM) 2.你可能违反了钩子的规则 3.同一应用程序中可能有多份React“


据我所知,hook-im-breaking的规则是在类中使用它,但我没有看到在我的组件中使用日历的其他方法。

使用JSX标记
而不是像这样执行BasicDatePicker组件
BasicDatePicker()

函数基本数据选择器(){
const[selectedDate,handleDateChange]=useState(新日期());
返回(
);
}
类GameList扩展组件{
状态={};
render(){
const{classes}=this.props;
返回(
);
}
}
导出默认值(游戏列表);

有什么错误?@Rastalamm哦,我的错误,当然,我已经将它添加到原始帖子中了。谢谢。你应该像这样渲染
基本数据采集器
!非常感谢。我可以问一下,以这种方式调用函数是如何使它工作的吗?我猜我缺少了一些东西。@Jahson,这是呈现组件(基于类和函数)的标准方法。我真的不知道“引擎盖下”发生了什么,但如果你想用钩子,这是唯一的办法。几乎每个react教程(包括)都使用这种语法。
function BasicDatePicker(){
  const [selectedDate, handleDateChange] = useState(new Date());

  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
      <DatePicker
        label="Basic example"
        value={selectedDate}
        onChange={handleDateChange}
        animateYearScrolling
      />
      </MuiPickersUtilsProvider>
  );
}


class GameList extends Component {
  state = {};

  render() {
    const { classes } = this.props;
    return (
      <div id="gameList">
        <BasicDatePicker />
      </div>
    );
  }
}


export default (GameList);