【问题标题】:Non lambda in React-Router V4 render functionReact-Router V4 渲染函数中的非 lambda
【发布时间】:2019-03-09 10:08:33
【问题描述】:

我有一个组件,我需要在使用 Route 组件进行渲染时将 props 传递到该组件中。问题是 typescript 在 JSX 中不允许使用 lambda 函数,我只是不知道如何将其重写为允许的函数:

<Route
   key={index}
   exact={true}
   path={item.urlAddress}
   render={() => <DocumentView data={data} />}
/>

我试过了,但它仍然被评估为 lambda,不知道为什么:

render={function() { <DocumentView /> }}

有人知道怎么改吗?

编辑:我知道这是一个 linter 问题,我正在寻找根据 ts-lint 标准编写它的正确方法。我知道我可以添加规则例外,但我想知道如何以“正确”的方式执行此操作,而不是每次遇到 linting 问题时都添加例外

【问题讨论】:

  • render={(data) =>
  • 这仍然是一个 lambda,并且不被 tslint 接受
  • 能把error的内容发过来吗,是不是jsx-nolambda
  • ts-lint: "由于对渲染性能的影响,在 JSX 属性中禁止使用 lambdas (jsx-no-lambda)"
  • @melbil 这不是打字稿问题您可以传递 lambda,语言允许。您只是在 tslint 中有一条规则(它强制执行最佳实践)来禁止它。

标签: reactjs typescript react-router


【解决方案1】:

您可以更改 tslint 规则以允许在渲染中使用箭头函数。但是,既然你问了另一种写上面的方法。它会这样写

renderDocument = (props) => {
   return <DocumentView data={data} {...props}/>
}
render() {
    return (
        <Route
           key={index}
           exact={true}
           path={item.urlAddress}
           render={this.renderDocument}
        />
    )
}

【讨论】:

猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 2018-10-18
  • 2019-01-15
  • 2018-01-10
  • 2017-11-18
相关资源
最近更新 更多