javascript - 使用 Flow react 无状态函数组件

标签 javascript reactjs flowtype

第一次使用 Flow,我仍在尝试接受这一切。 既然 Header 是一个函数,它是否需要返回类型?

另外关于 Props,由于 logout 和 handleModalOpen 不接受任何参数,因此 () => void 是有效语法还是应该更改?

我觉得我已经掌握了 Flow 的窍门,但我想在犯任何重大错误之前确定一下。

// @flow
import * as React from 'react';
import { Navbar, Nav, NavItem } from 'react-bootstrap';
import { Link } from 'react-router-dom';

type Props = {
  logout: () => void,
  handleModalOpen: () => void,
  isAuth: boolean,
}

const Header = (props: Props) => (
  <Navbar inverse fluid collapseOnSelect>
    <Navbar.Header>
      <Navbar.Brand>
        <Link to={props.isAuth ? '/dashboard' : '/'}>My Saved Recipes</Link>
      </Navbar.Brand>
      {props.isAuth && (
        <Navbar.Toggle />
      )}
    </Navbar.Header>
    <Navbar.Collapse>
      <Nav pullRight>
        <NavItem eventKey={1} onClick={props.handleModalOpen}>
          + Add Recipe
        </NavItem>
        {/* <LinkContainer to="/account">
          <NavItem eventKey={2}>
            Account
          </NavItem>
        </LinkContainer> */}
        <NavItem eventKey={3} onClick={props.logout}>
          Logout
        </NavItem>
      </Nav>
    </Navbar.Collapse>
  </Navbar>
);

export default Header;

最佳答案

您不需要注释返回类型,但如果您想输入Header,我可能会这样做:

const Header: React$ComponentType<Props> = props => /* ...etc */

它将添加 Prop 要求。

就您的 props 而言,您应该根据您的期望输入这些函数。如果您期望一个不带参数且不返回任何内容的函数,那么您已经成功了。如果您希望它能够接受一个事件,那么您可能希望您的 props 接受该事件。

关于javascript - 使用 Flow react 无状态函数组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483871/

相关文章:

javascript - 根据键比较添加 JSON 值

javascript - 尝试查找以前的 DOM 元素并获取输入值 jquery

javascript - 单行 if 语句

javascript - 如何从 Angular 中的 BehaviouralSubject 中提取值

reactjs - Material UI 选择字段多选

javascript - 删除倒数第二个索引后的其余字符串

reactjs - 初始化后更新 ApolloClient header

javascript - 在 Flow 中定义无界元组

javascript - 访问对象上具有默认值的字段时如何修复流程错误?

javascript - 如何使用单独的声明文件从外部模块声明 React.Component 类型?