【问题标题】:Rendering component with no render method in ReactJS在 ReactJS 中没有渲染方法的渲染组件
【发布时间】:2018-11-28 18:25:14
【问题描述】:

我有一个关于 React 和 Meteor 的问题。在 Meteor App 中,我使用 React Router 进行电子邮件验证Accounts.verifyEmail,在这里我将参数传递给组件时遇到问题。在组件中,我只想执行功能而不渲染任何东西。但是我收到一个错误Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null. 可以解释一下如何解决这个问题吗?

routes.js

import { Meteor } from 'meteor/meteor';
import VerifyEmail from '../imports/ui/verifyEmail'

const routes = () => (
  <Router>
    <Switch>
        <Route name="confirm-account" path="/confirm-account/:token" render = {(props)=><VerifyEmail {...props}/>}/>                 
    </Switch>
  </Router>    
)

export default routes

../imports/ui/verifyEmail.js

const VerifyEmail = ({match:{params}}) => {
  let token = params.token
  Accounts.verifyEmail(token, function(error){
    if(error){
        console.log(error)
    } else {
        console.log('Works')
    }
  })
};

导出默认验证邮箱

【问题讨论】:

    标签: reactjs meteor react-router


    【解决方案1】:

    这实际上是否应该是一个组件是有争议的,因为它实际上并没有渲染任何东西,但是如果您确实需要它成为一个组件,您收到的错误消息实际上是在告诉您如何解决这个问题问题。

    渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null。

    您可以从组件返回 null 以不渲染任何内容。方法如下。

    const VerifyEmail = ({match:{params}}) => {
      let token = params.token
      Accounts.verifyEmail(token, function(error){
        if(error){
            console.log(error)
        } else {
            console.log('Works')
        }
      })
    
      return null;
    };
    

    【讨论】:

      【解决方案2】:

      组件需要有渲染功能。如果 VerifyEmail 不是应该渲染的东西,而只是运行逻辑的东西,也许它应该只是一个函数而不是一个组件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-20
        • 2023-04-10
        • 1970-01-01
        • 2019-02-17
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        相关资源
        最近更新 更多