我正在为我的反应项目使用排毒,并且它具有使用React-Native-Calendar的议程组件的日历组件。我希望为议程组件添加一个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'
}}/>
快速搜索react-native-calendars
回购表明testID
Prop仅在CalendarHeader
组件中支持。
看来该库提供的剩余组件不支持testID
,但这并不意味着它们不能。
如果您查看添加testID
Prop的排毒故障排除指南是:
解决方案:React Native仅支持本机上的
testID
Prop 内置组件。如果您创建了自定义复合组件, 您将必须自己支持此道具。你应该应该 向您的一个渲染的孩子传播测试道具(一个内置的孩子 组件):
不幸的是,Agenda
组件不是您创建自己的组件,因此您无法控制其道具。您可以采取一些行动:
- 创建一个问题,并希望Repo的开发团队中的某人能够做出您想要的更改。
- 分叉图书馆。现在,这将使您完全控制组件。您将能够添加所需的
testID
道具。然后,您可以使用库的分叉版本。这可能很有用,但请注意,您必须维护分叉的存储库。您总是可以将更改作为公关提交,并且可能会合并到实际版本中。
最快的解决方案显然是选项2。然后,您可以在package.json
中使用分叉版本如下:
"react-native-calendars": "your_github_name/react-native-calendars"