Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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 什么是;无状态函数组件不能被指定为refs“;什么意思?_Javascript_Reactjs_Redux_React Redux - Fatal编程技术网

Javascript 什么是;无状态函数组件不能被指定为refs“;什么意思?

Javascript 什么是;无状态函数组件不能被指定为refs“;什么意思?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有这个: const ProjectsSummaryLayout = ({projects}) => { return ( <div className="projects-summary col-md-10"> <h3>Projects</h3> <ul> { projects.map(p => <li key={p.id}>{p.co

我有这个:

const ProjectsSummaryLayout = ({projects}) => {
   return (
      <div className="projects-summary col-md-10">
          <h3>Projects</h3>
          <ul>
              { projects.map(p => <li key={p.id}>{p.contract.client}</li>) }
          </ul>
      </div>
   )
}

const ProjectsSummary = connect(
   state => ({projects: state.projects})
)(ProjectsSummaryLayout)
const ProjectsSummaryLayout=({projects})=>{
返回(
项目
    {projects.map(p=>
  • {p.contract.client}
  • )}
) } const ProjectsSummary=connect( state=>({projects:state.projects}) )(项目总布置图)
我得到:

警告:无法为无状态函数组件提供ref(请参阅ref 项目中的“wrappedInstance”由创建的mmaryLayout 连接(项目MMARYLAYOUT))。尝试访问此ref将失败 失败

它想告诉我什么?我真的做错了什么吗

我看到了关于这一点的讨论,但不幸的是,我根本不理解结论。

在React中

React Redux3
ref
附加到您提供给它的组件,而不管它是否是无状态的。您看到的警告来自React,因为React Redux 3在内部将
ref
附加到您提供的无状态组件(
ProjectsSummaryLayout

你没有做错任何事,根据你的判断,你可以安全地忽略警告


在React-Redux4中,默认情况下,没有任何
ref
附加到包装组件,这意味着如果升级到React-Redux 4,警告应该消失。

React有两种常用组件样式

  • 功能部件
  • 类组件
所以,当我使用函数一的时候,我遇到了这个错误。

对应于功能组件的代码段

但只要我把它改成类组件,它就工作了

与类组件相对应的代码段

尝试将功能组件更改为类组件。
我希望它能解决您的问题。

注意到react dnd存在同样的问题。警告:无法为无状态函数组件提供引用。尝试访问此ref将失败。检查
DragSource(Component)
的渲染方法。这会掩盖问题,在这种情况下,您应该只使用
React.forwardRef