Компонент рендеринга без метода рендеринга в ReactJS - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть один вопрос о React и Meteor.В приложении Meteor я проверяю электронную почту Accounts.verifyEmail, используя React Router, и здесь у меня проблема с передачей параметров в компонент.В компоненте я хотел бы только выполнить функцию без рендера.Но я получаю сообщение об ошибке Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null. Не могли бы вы объяснить, как я могу это исправить?

rout.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

.. / import / 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')
    }
  })
};

экспорт по умолчанию VerifyEmail

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

вопрос о том, должен ли это быть на самом деле компонент, является дискуссионным, поскольку на самом деле он ничего не отображает, но в случае, если вам действительно нужен этот компонент, полученное вами сообщение об ошибке фактически говорит вам, как это можно решить.Проблема.

Ничего не было возвращено от рендера.Обычно это означает, что отсутствует инструкция возврата.Или, чтобы ничего не рендерить, верните ноль.

Вы можете вернуть ноль из вашего компонента, чтобы ничего не рендерить.Вот как.

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

  return null;
};
0 голосов
/ 28 ноября 2018

Компоненты должны иметь функцию рендеринга.Если VerifyEmail - это не то, что должно отображаться, а только то, что выполняет логику, возможно, это должна быть просто функция вместо компонента.

...