繁体   English   中英

在没有类组件的情况下使用构造函数(道具)

[英]Using Constructor(props) without Class Component

我在 TypeScript 中创建了一个搜索栏,但现在我无法在其中输入任何内容。 我看过的所有控制组件教程都建议使用构造函数(道具)左右。 如果我在我的代码中使用它,我会得到错误。

有没有办法在没有类组件的情况下使用它?

例如,我为我的页面使用了 const()。 有什么办法可以使这个功能的搜索栏?

const userSearchPage = () => (
  <div>
    <PermanentDrawerLeft></PermanentDrawerLeft>
    <div className='main-content'>
      <MuiThemeProvider>
        <DropDownMenu >
          <MenuItem style={{ fontSize: "20px" }} primaryText="Search By" />
          <MenuItem value={1} style={{ fontSize: "20px" }} primaryText="First Name" />
          <MenuItem value={1} style={{ fontSize: "20px" }} primaryText="Last Name" />
        </DropDownMenu>
      </MuiThemeProvider>
   <SearchBar
        onChange={() => console.log('onChange')}
        onRequestSearch={() => console.log('onRequestSearch')}
        style={{
          margin: '0 auto',
          maxWidth: 800
        }}
     />
    </div>
  </div>
);

您必须在功能组件中使用 useState 钩子。

const userSearchPage = () => {
const [value, setValue] = React.useState('');
return (
  <div>
    <PermanentDrawerLeft></PermanentDrawerLeft>
    <div className='main-content'>
      <MuiThemeProvider>
        <DropDownMenu >
          <MenuItem style={{ fontSize: "20px" }} primaryText="Search By" />
          <MenuItem value={1} style={{ fontSize: "20px" }} primaryText="First Name" />
          <MenuItem value={1} style={{ fontSize: "20px" }} primaryText="Last Name" />
        </DropDownMenu>
      </MuiThemeProvider>
      <SearchBar
        onChange={(value) => setValue(value) }
        value={value} 
        onRequestSearch={() => console.log('onRequestSearch')}
        style={{
          margin: '0 auto',
          maxWidth: 800
        }}
      />
    </div>
  </div>
)} ;

功能组件中的道具只是参数!

function SearchBar (props) {
  let searchbartext = document.getElementById('searchbartext')
  searchbartext.addEventListener('change', (e) => {
    props.onChange(e)
  }
  return ( 
    <form onsubmit={(e) => props.onRequestChange(e)}>
      <input id="searchbartext" style={props.style} />
    </form>
  )
}
const UserSearchPage = () => {
  function onRequestSearch (e) {
    console.log.('request search', e)
  }
  function onChange(e) {
    console.log('onChange')
  }
  return (
  {SearchBar({
        onChange:onChange,
        onRequestSearch:onRequestSearch,
        style:{
          margin: '0 auto',
          maxWidth: 800
        }
     })}
  )
}

编辑:您还必须将功能组件作为函数调用,而不是像类组件那样使用<>语法。 我在 SearchBar(props) 中使用了术语“props”,但它只是遵循 Reacts 命名约定。 你可以很容易地用 SearchBar(bananas) 替换它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM