0

我正在为我的 react-native 项目使用 detox,它有一个使用 react-native-calendar 中的 Agenda 组件的日历组件。我希望为议程组件添加一个 testID,但似乎没有。这是我的议程代码。

  <Agenda
    items={this.state.items}
    onDayPress={(day)=>{console.log('day pressed',day)}}
    onDayChange={(day)=>{console.log('day changed')}}
    pastScrollRange={50}
    futureScrollRange={50}
    renderItem={(item, firstItemInDay) => {return (<CalendarEvent EventID={item.EventID} navigation ={this.props.navigation}/>);}}


    renderEmptyDate={() => {return (<EmptyEvent/>);}}
    // specify what should be rendered instead of ActivityIndicator
    //renderEmptyData = {() => {return (<EmptyEvent/>)}}
    rowHasChanged={(r1, r2) => {return r1.text !== r2.text}}
    // By default, agenda dates are marked if they have at least one item, but you can override this if needed
    markedDates={markedDates}
    theme={{
                    backgroundColor: '#203546',
                    calendarBackground: '#203546',
                    textSectionTitleColor: '#ffffff',
                    selectedDayBackgroundColor: '#203546',
                    selectedDayTextColor: '#ffffff',
                    todayTextColor: '#00adf5',
                    dayTextColor: '#ffffff',
                    textDisabledColor: '#ffffff',
                    dotColor: '#ffffff',
                    selectedDotColor: '#ffffff',
                    monthTextColor: '#ffffff',
                    textMonthFontWeight: 'bold',
                    textDayFontSize: 16,
                    textMonthFontSize: 20,
                    textDayHeaderFontSize: 15,
                    agendaDayTextColor: 'white',
                    agendaDayNumColor: 'white',
                    agendaTodayColor: '#00adf5',
                    agendaKnobColor: 'white'
                    }}/>
4

1 回答 1

1

快速搜索react-native-calendarsrepo 表明该道具testID仅在CalendarHeader组件中受支持。

该库提供的其余组件似乎不支持testID,但这并不意味着它们不能。

如果您查看添加道具的排毒故障排除指南,则说明:testID

解决方案:React Native 只支持testID原生内置组件上的 prop。如果您创建了自定义复合组件,则必须自己支持此道具。您可能应该将 testID 道具传播到您呈现的孩子之一(内置组件):

不幸的是,该Agenda组件不是您自己创建的,因此您无法对其道具进行太多控制。您可以采取一些措施:

  1. 创建一个问题,并希望 repo 的开发团队中的某个人做出您想要的更改。
  2. 分叉图书馆。现在,您可以完全控制组件。您将能够添加所需的testID道具。然后,您可以使用库的分叉版本。这可能很有用,但请注意,您必须维护分叉的 repo。您始终可以将更改作为 PR 提交,它可能会合并到实际版本中。

最快的解决方案显然是选项 2。然后您可以在您的中使用您的分叉版本,package.json如下所示:

"react-native-calendars": "your_github_name/react-native-calendars"
于 2019-02-26T14:14:24.787 回答