Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Reactjs 未捕获不变冲突:只能在函数组件的主体内部调用挂钩_Reactjs_Import_React Hooks - Fatal编程技术网

Reactjs 未捕获不变冲突:只能在函数组件的主体内部调用挂钩

Reactjs 未捕获不变冲突:只能在函数组件的主体内部调用挂钩,reactjs,import,react-hooks,Reactjs,Import,React Hooks,正如标题中所说,我似乎不能使用挂钩 我知道你们中的一些人会试图告诉我这是一个复制品,但这并不是我见过的所有问题中都没有人会问,使用导入功能组件的正确方法是什么 我试图渲染的组件 import React from 'react'; import { hot } from 'react-hot-loader'; import Playground from '../playground/index'; class App extends React.Component { rende

正如标题中所说,我似乎不能使用挂钩

我知道你们中的一些人会试图告诉我这是一个复制品,但这并不是我见过的所有问题中都没有人会问,使用导入功能组件的正确方法是什么 我试图渲染的组件

    import React from 'react';
import { hot } from 'react-hot-loader';
import Playground from '../playground/index';

class App extends React.Component {
  render() {
    Playground();
    return (
      <div>
        <p>Hello World</p>
      </div>
    );
  }
}

export default hot(module)(App);
以及我尝试导入的功能组件:

import React, { useState } from 'react';

export default function Playground() {
  const [text, setText] = useState('');
  const [checked, setCheck] = useState(false);

  return (
    <section>
      <input type="text" value={text} onChange={e => setText(e.target.value)} />
      <input
        type="checkbox"
        value={checked}
        onChange={e => setCheck(e.target.value)}
      />
      <ul>
        <li>{text}</li>
        <li>{checked.toString()}</li>
      </ul>
    </section>
  );
}
import React,{useState}来自“React”;
导出默认函数(){
const[text,setText]=useState(“”);
const[checked,setCheck]=useState(false);
返回(
setText(e.target.value)}/>
setCheck(e.target.value)}
/>
  • {text}
  • {checked.toString()}
); }
使用函数组件的正确方法与使用类组件的正确方法没有什么不同。您不应该尝试调用组件函数,就像您不创建类的实例一样,您只需要在JSX中使用它

通过调用组件函数,您基本上将其视为一个自定义钩子(自定义钩子只是一个使用React的内置钩子(如
useState
)的函数),该钩子返回React元素。这会导致React发出抱怨,因为您是从类组件的render方法而不是从函数组件的主体调用自定义钩子

以下是使用
游乐场
组件的一种可能方法:

import React from 'react';
import Playground from '../playground/index';

class App extends React.Component {
  render() {
    return (
      <Playground/>
    );
  }
}
从“React”导入React;
从“../playerd/index”导入游乐场;
类应用程序扩展了React.Component{
render(){
返回(
);
}
}

使用函数组件的正确方法与使用类组件的正确方法没有什么不同。您不应该尝试调用组件函数,就像您不创建类的实例一样,您只需要在JSX中使用它

通过调用组件函数,您基本上将其视为一个自定义钩子(自定义钩子只是一个使用React的内置钩子(如
useState
)的函数),该钩子返回React元素。这会导致React发出抱怨,因为您是从类组件的render方法而不是从函数组件的主体调用自定义钩子

以下是使用
游乐场
组件的一种可能方法:

import React from 'react';
import Playground from '../playground/index';

class App extends React.Component {
  render() {
    return (
      <Playground/>
    );
  }
}
从“React”导入React;
从“../playerd/index”导入游乐场;
类应用程序扩展了React.Component{
render(){
返回(
);
}
}

更新您的问题您发布的代码与我更新的代码相同!在这里检查我的答案这是同一个问题我会添加解释更新你的问题你在两次发布相同的代码谢谢我在更新它!在这里检查我的答案,这是同一个问题,我将添加一个解释