2016-09-19 2 views
3

다른 소품이 전달 될 때 다른 기능을 가질 수있는 다양한 React 구성 요소가 있습니다. 종종이있는 경우 한 가지만 수행하면됩니다. 그러나 prop2이 있으면 다른 작업을 수행합니다.Flowjs에서 필요한 두 개의 소품 중 하나를 지정하는 방법은 무엇입니까?

한 예로 입력 값이 다른 요소에 대해 두 개의 변경 핸들러를 사용할 수 있습니다.

두 핸들러 중 하나가 필요하다는 것을 Flowjs에 지정하는 방법이 있습니까?

+0

나는 당신의 질문이 흐름 코드 목표는,을 포함한 모든 환경에 적용해야한다고 생각 하나 이에 국한되지 않는 반작용, 그리고 다른 모든 것들. 질문의 제목과 본문이 * React * React *에 더 적합하지 않습니까? 나는 그저 그렇다고 제안하고있다. –

답변

3

원하는대로 Flow 유형 주석을 React 이외의 컨텍스트에 적용 할 수 있습니다. 일반적으로, 당신은 독점 또는 원하는 당신이 할 수있는 확인을 입력하면 :

type Something = { 
    prop1: number, 
    prop2?: null 
} 

type Another = { 
    prop1?: null, 
    prop2: number 
} 

function foo(parameter: Something | Another) { 

} 

foo({ prop1: 10 }); // Good 
foo({ prop2: 10 }); // Good 
foo({ prop1: 10, prop2: 10 }); // Bad 

당신이 포함-또는 유형 검사를 원하는 경우에, 당신이 할 수 있습니다 :

type Something = { 
    prop1: number, 
    prop2?: null 
} 

type Another = { 
    prop1?: null, 
    prop2: number 
} 

type SomethingAndAnother = { 
    prop1: number, 
    prop2: number 
} 

function foo(parameter: Something | Another | SomethingAndAnother) { 

} 

foo({ something: 10, prop1: 10 }); // Good 
foo({ something: 10 }); // Bad 
foo({ prop1: 10 }); // Good 
foo({ prop2: 10 }); // Good 
foo({ prop1: 10, prop2: 10 }); // Good 

에서 사용자가 정의한, 반작용을 그래서 같은 props 재산에 유형 :

class TodoList extends React.Component { 
    props: Something | Another; 

    render(): React.Element { 
    return (
     // .... 
    ) 
    } 
} 
관련 문제