reactjs - 克服无状态组件中缺乏引用的问题

标签 reactjs

我想创建一个无状态搜索组件。单击按钮时,我需要访问搜索字段的值。以下是可以接受的方法吗?这种方法有什么缺点吗?

const Search = ({onBtnClick}) => {
    const onClick = (e) => {
      const query = e.target.previousSibling.value;
      onBtnClick(query);
    };  

    return(
      <div>
        <input type="search" />
        <button onClick={onClick}>Search</button>
      </div>
    )   
  }

最佳答案

在无状态组件中,您可以将 reffunction 一起使用,如下所示

const Search = ({ onBtnClick }) => {
  let search;
  
  const setNode = (node) => {
    search = node;
  };
  
  const onClick = () => {
    onBtnClick(search.value);
  };  

  return (
    <div>
      <input type="search" ref={ setNode } />
      <button onClick={ onClick }>Search</button>
    </div>
  );  
}

function onBtnClick(value) {
  console.log(value);
}

ReactDOM.render(
  <Search onBtnClick={onBtnClick} />,
  document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>

关于reactjs - 克服无状态组件中缺乏引用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918706/

相关文章:

javascript - 在 ReactJS 中使用导入

javascript - 我如何错误地导出对象?

javascript - 如何使用重定向将 props 传递给路由

javascript - 调用 setState() 函数时会发生什么?

javascript - 相当于使用 React hooks 的 componentDidUpdate

javascript - 输入类型 ="file"上的图像旋转

javascript - 回流 Action 执行后触发通知/回调

javascript - ReactJS-JavaScript : How to zoom on customized marker after click on it

javascript - 如何在 React 中更改元素的样式?

javascript - 单个 if 条件的行为(省略 else 返回 false)