2016-10-31 2 views
0

..경고 콘솔 스파크를 사용하는 동안 - Reactjs 스파크의 소품에 대한 경고 콘솔에 직면

경고 : 수동 SparklinesLinecolor 소품에 대한 React.PropTypes 검증 함수를 호출한다. 이것은 더 이상 사용되지 않으며 다음 주 버전에서는 작동하지 않습니다. 타사 PropTypes 라이브러리로 인해이 경고가 표시 될 수 있습니다.

코드

import React, {Component} from 'react'; 
    import {Sparklines, SparklinesLine, SparklinesBars} from 'react-sparklines'; 

export default (props) => { 
    return(
     <Sparklines data={props.data}> 
     <SparklinesLine color={props.color}/> 
     </Sparklines> 
); 
} 

답변

2

그것은 PropTypes과 관련이있다에 봐주십시오 생산에서 제거된다. 반작용의 향후 주요 릴리스에서

에서 제거됩니다하여 PropType 검증 기능을 구현하는 코드 - 여기

https://facebook.github.io/react/warnings/dont-call-proptypes.html는 일반적인 생각이다 -

그들은이 모든 것을 설명하는 놀라운 포스트가 생산. 이런 일이 발생하면 프로덕션에서 제거되지 않는 이러한 함수를 수동으로 호출하는 코드는 오류를 발생시킵니다. 그들은 PropTypes API에 대한 호출의 정확한 위치에 대한 스택 추적을보고 제안

// Not supported! 
var error = apiShape(json, 'response'); 

-

경고에 의해 생성 된 스택 추적을 검사합니다. PropTyp 직접 호출을 담당하는 구성 요소 정의를 찾을 수 있습니다.

포스트는 가양 수정 제안을 제공합니다 - 당신은 타사 PropTypes 라이브러리의 저자 인 경우

을하고 소비자가 PropTypes 반응 기존의 포장하자, 그들은이 경고오고보기 시작할 수 있습니다 귀하의 도서관에서. 이것은 React가 수동 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); 
    }; 
} 

당신은 기능에 ...rest를 사용하여 위의 코드를 해결할 수 -

export default function deprecated(propType, explanation) { 
    return function validate(props, propName, componentName, ...rest) { // Note ...rest here 
    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, ...rest); // and here 
    }; 
} 

그래서이 직접 Sparklines lib 디렉토리에있을 수 있습니다, 또는 어딘가에 코드 - 아래를 참조하십시오. 전체 스택 추적 없이는 말할 수 없지만 문제를 해결하는 데 더 가까워 야합니다.

+0

나는 그것을위한 해결책을 가지고있다 ... 나는 방금 sparklines release보다 오래된 내 반응 라이브러리를 업데이트했다. 이제 잘 작동합니다. –