代码之家  ›  专栏  ›  技术社区  ›  Abhishek Agrawal

React道具不反映memoizedProps

  •  0
  • Abhishek Agrawal  · 技术社区  · 4 年前

    我有一个可重用的日期输入功能组件。承载此视图的功能组件具有作为道具的变体。

    
    export default function DateInput({
      testID,
      variant = 'default',
    }: Props): React.MixedElement {
    
    return (
        <View testID={testID}>
             // other elements here for text box etc.....
        </View>
    );
    
    

    此dateInput托管在另一个功能组件BirthdateStep中

    return (
        <View>
            <DateInput
                  testID='birthdate'
                  variant='default'
             />
         </View>
    

    我正在尝试使用测试库/react native来测试组件。

    const {queryByTestId} = render(
              <BirthdateStep />        
          );
    
    const birthdateField = queryByTestId('birthdate');
    
    
    // This statement fails as variant is undefined
    expect(birthdateField.props.variant).toBe('default');
    
    
    // This works
    expect(birthdateField.props.children[0]._owner.memoizedProps.variant).toBe('default');
    
    
    // This also works
    expect(birthdateField.props.children[0]._owner.testID).toBe(birthdateField.props.testID);
    

    我不知道为什么道具不反映testID以外的任何属性?而且是在_owner的备忘录道具中。我通过调试找到了_所有者。

    有什么建议吗?

    0 回复  |  直到 4 年前
    推荐文章