2016-10-09 2 views
1

Итак, я смотрю на опции ответа proptypes, и я хочу проверить, есть ли у детей определенный тип, его действительно простой и, как упоминалось здесь: https://facebook.github.io/react/docs/reusable-components.html#prop-validation Мне нужно вернуть объект Error, а не throw. Но когда я возвращаю объект Error, он не печатает на консоль, но если я бросаю объект Error, все работает нормально.React - proptypes validation - return Ошибка не работает, но бросает

propTypes объекта:

const propTypes = { 
     children: function(props, propName) { 
      const children = props[propName]; 
      React.Children.forEach(children, (child) => { 
       if (child.type !== Field) { 
        // doesnt work 
        return new Error('Error'); 
       } 
       return; 
      }); 
     } 
    }; 

const propTypes = { 
     children: function(props, propName) { 
      const children = props[propName]; 
      React.Children.forEach(children, (child) => { 
       if (child.type !== Field) { 
        // does work 
        throw new Error('Error'); 
       } 
       return; 
      }); 
     } 
    }; 

Что я должен делать?

+0

Пожалуйста, включите [mcve], чтобы продемонстрировать эту проблему. –

ответ

2

Возврат из forEach Цикл не обеспечивает возврат функции закрытия. То, что вы должны сделать лучше либо использовать простую for петли или Array.prototype.some

const propTypes = { 
    children: function(props, propName) { 
    const children = props[propName]; 
    const invalid = React.Children.some(children, child => child.type !== Field); 
    if (invalid) { 
     return new Error('Error'); 
    } 
    } 
}; 
Смежные вопросы