2016-09-01 3 views
0

Кто-нибудь может предложить, как удалить предупреждения третьих лиц? https://facebook.github.io/react/warnings/dont-call-proptypes.htmlReact native не называйте предупреждения PropTypes?

Я не знаю, как реализовать и где поставить код, упомянутый в официальной документации. Они принимают код из среагировать-самозагрузку

export default function deprecated(propType, explanation) { 
    return function validate(props, propName, componentName) { 
if (props[propName] != null) { 
     const message = `"${propName}" property of 
     "${componentName}" has  been deprecated.\n${explanation}`; 
    if (!warned[message]) { 
    warning(false, message); 
    warned[message] = true; 
    } 
} 

return propType(props, propName, componentName); 
}; 
} 

Пожалуйста, напишите шаг за шагом, чтобы разрешить предупреждения третьих лиц.

Благодаря

ответ

0

Если все, что вы пытаетесь сделать, это предотвратить помощник отладки «Yellow Box» от появления, вы можете использовать console.ignoredYellowBox свойство белый список префиксов, которые не должны быть показаны:

const existingIgnoreList = console.ignoredYellowBox; 
const prefixesToIgnore = [ 
    'Warning: "foo" property of "Bar"' 
]; 

console.ignoredYellowBox = existingIgnoreList 
    ? existingIgnoreList.concat(prefixesToIgnore) 
    : prefixesToIgnore; 

Редактировать на основе комментариев: Если вы хотите полностью подавить сообщение console.error, нет официального и законного способа сделать это.

Что вы can do is monkey patch console.error метод и отфильтруйте это конкретное сообщение. Патч должен произойти после того, как ваш код приложения был оценен, но до того, как будет установлен компонент-нарушитель.

Хорошее место будет в componentWillMount обработчик вашего корневого компонента:

componentWillMount() { 
    console.__error = console.error; 
    console.error = function overrideConsoleError(...args) { 
    if (!typeof args[0] === 'string' || !args[0].startsWith('Warning: "foo" property of "Bar"')) { 
     console.__error(...args); 
    } 
    }; 
} 

Но пожалуйста, пожалуйста, не на самом деле это сделать. Это действительно плохая идея :)

+0

Да, есть желтая коробка, но официальные документы предлагают что-то еще. я больше желаю следовать рекомендациям, которые они упоминают в своих официальных документах. все, что вы можете предложить из приведенного выше кода. Решение, которое вы предоставили уже в stackoverflow http://stackoverflow.com/questions/38907803/how-to-suppress-warning-due-to-a-third-party-proptypes-library-in-react-native/38907884? noredirect = 1 # comment65901347_38907884 –

+0

После внедрения этого решения у меня все еще есть предупреждение красного цвета в консоли отладки. –

+1

Проблема в том, что код нарушения не находится в вашей собственной базе кода, он находится в стороннем модуле. Документы в вашем вопросе - это то, что должен делать автор библиотеки. Для того, чтобы ** вы ** исправить это, вам нужно разблокировать эту библиотеку, исправить исходную причину проблемы, отправить запрос на перенос, дождаться новой версии и т. Д. Если вы это сделаете, если вам нужно удалить ошибку , Я добавил интересный и творческий способ обойти проблему :) – jevakallio

0

Можете ли вы показать фрагмент кода, где вы имеете дело с Proptypes? Может быть, какая-то библиотека или даже реагировать на собственный код запускают эти предупреждения React, поэтому проверьте, соответствует ли ваша соответствующая версия реакции правильной.

+0

Эти предупреждения поступают из библиотеки вечеринок. я не задерживаюсь с прототипом –