2016-09-13 5 views
0

반응 0.14가 도입되었습니다. stateless functional components입니다.상태 비 저장 기능 구성 요소를 반품하십시오. defaultProps 함수

당신은 여전히 ​​

는 그러나, 나는이 설정되어 있지 않은 경우 (예를 당) 임의의 값으로 소품 중 하나를 초기화하려는 기능에 속성으로 설정하여 .propTypes.defaultProps을 지정할 수 있습니다. 내가 defaultProps 경우에만 개체를 ​​수락 할 수 없습니다. 함수를 사용하여 초기화하는 방법이 있습니까? 아니면 전체 React 구성 요소를 만들어야합니까?

+0

'var value = props.value || 함수에서 randomValue(); –

+0

@FelixKling 구성 요소를 다시 인스턴스화하지 않고도 소품을 변경할 수 있습니까? 구성 요소가 다시 렌더링되면 동일한 값을 사용하기를 원하기 때문입니다. 그러나 무국적 기능 구성 요소가 결코 다시 렌더링되지 않으면 괜찮습니다. – mpen

답변

0

이 작업을 수행하는 가장 쉬운 방법은 Andrew가 설명한 것처럼 기본 소품을 임의 값으로 설정하는 것입니다.

Component.defaultProps = { 
    someProp: randomValue 
} 

설정되어 있으면이 기본값이 다시 정의되므로 설명 된 동작에 적용됩니다.

함수를 사용하여 기본값을 설정하려는 경우 기본적으로 동일한 할당입니다.

Component.defaultProps = { 
    someProp = fxnRandomValue() 
} 

편집 :

모든 인스턴스가 진정이 소품의 값을 무작위 확인하려면, 당신은 기본적으로 전부 소품 및 구성 요소 내에서 할당을 설정 건너 건의 할 것입니다. 예 :

import { withState } from "recompose"; 

var enhance = withState("someProp", "updateSomeProp", (props) => props.someProp || randomValue()); 
var MyComponent = enhance(function(props) { 
    // This is your stateless component. 
    return <div>{props.someProp}</div>; 
}); 

이 기본적으로 상태를 포함하는 래퍼 구성 요소를 만듭니다 : 당신이 recompose 라이브러리를 사용하는 경우

const statelessComp = ({ prop }) => { 
    prop = prop || fxnRandomValue(); 
    return (
    ... 
) 
} 
+0

죄송합니다. 나는 분명하지 않다고 생각합니다. 각 인스턴스마다 임의의 값을 원합니다. 구성 요소를 처음 렌더링 한 후에는 값이 변경되지 않지만 각 인스턴스에는 고유 한 값이 필요합니다. 저는 여러분의 솔루션이 모든 인스턴스에 대해 하나의 값을 생성 할 것이라고 확신합니다. – mpen

+0

반드시 그렇지는 않습니다. 그것은 당신의 무작위 화 기능이 어떻게 작동하는지에 달려 있습니다. 'defaultProps'는 함수가 각 인스턴스를 생성하려고 할 때마다 호출됩니다. 그러나 다른 곳에서는 무작위가 아닌지 걱정되면 함수 내에서 과제를 수행하도록 선택할 수 있습니다. – Cent

+0

'prop = prop || fxnRandomValue()'는 모든 재 렌더링시에 다른 임의의 값을 갖게 할 것입니까? 처음 인스턴스화 한 후에 수정해야합니다. 또한'Component.defaultProps'는 함수가 아닌 정적 속성이므로 "호출"되지 않습니다. – mpen

1

, 당신은이 같은 솔루션을 달성 할 수있다. someProp이 정의되지 않은 경우 상태는 임의의 값으로 초기화됩니다.

관련 문제