一个函数内有两个函数,一个作为道具,一个作为函数

Two function inside one function one as props and one as function

我正在为日历创建一个通用组件。我需要在一个函数内调用两个函数,例如:-

onDateChange = {()=>{ props.onDateChange,setShowCal()}}

因此 setShowCal() 可以在选择后关闭日历并 props.onDateChange 在父组件中给出所选日期。

但只有 setShowCal() 有效,props.onDateChange 无效。

公共组件完整代码:-

export const PrimaryCalendar = (props)=>{
const [showCal, setShowCal] = React.useState(false);
const mindate = new Date();
const showCalendar = ()=>{
    setShowCal(!showCal)
}
return(
    <View>
    {(showCal) ? 
        <View style={styles.container}>
        <CalendarPicker
        selectedDayColor="#079B2B"
        minDate = {mindate}
        startFromMonday={true}
        allowRangeSelection={true}
        todayBackgroundColor="#79AE08"
        previousTitle="Previous"
          nextTitle="Next"
        onDateChange = {()=>{ props.onDateChange,setShowCal()}}
        />
        </View>
    :
    <View>
    <TouchableOpacity style={styles.calendarInputContainer} onPress={()=>showCalendar()}>
        <Text style={{color:'white', fontSize:25}}>{props.title}</Text>
        <Icon name="calendar" size={30} color={'white'}/>
        </TouchableOpacity>
    </View>
    }
        </View>
)

}

我该如何实施? 谢谢!!!

export const PrimaryCalendar = (props)=>{
const [showCal, setShowCal] = React.useState(false);
const mindate = new Date();
const showCalendar = ()=>{
    setShowCal(!showCal)
}
const handleOnDateChange = () =>{
    props.onDateChange()
    setShowCal()
}
return(
    <View>
    {(showCal) ? 
        <View style={styles.container}>
        <CalendarPicker
        selectedDayColor="#079B2B"
        minDate = {mindate}
        startFromMonday={true}
        allowRangeSelection={true}
        todayBackgroundColor="#79AE08"
        previousTitle="Previous"
          nextTitle="Next"
        onDateChange = { handleOnDateChange }
        />
        </View>
    :
    <View>
    <TouchableOpacity style={styles.calendarInputContainer} onPress={()=>showCalendar()}>
        <Text style={{color:'white', fontSize:25}}>{props.title}</Text>
        <Icon name="calendar" size={30} color={'white'}/>
        </TouchableOpacity>
    </View>
    }
        </View>
)

让你的 onChange 回调执行一个名为 handleTextAreaChange 的函数,然后执行你的 props.onDateChange()setShowCal()

你的错误是onDateChange = {()=>{ props.onDateChange,setShowCal()}}

当声明 () => { } 时,花括号内的内容是一个代码块,这意味着逗号分隔您的函数调用是错误的。

这是一个如何完成的例子

onChange={ () => {
            functionCall1()
            functionCall2()
          } }