反应本地Wix日历标记日期显示错误

时间:2018-10-02 08:13:23

标签: javascript react-native

我正在为我的项目使用wix日历,我已经按照另一个问题中的类似主题执行了所有步骤。

我已经这样编码

class TutorCalender extends Component {

    static navigationOptions = {
        header: null,
        final_array: {},
        tution_array: [],
        unavailable_array: []
    }
    componentWillMount = async () => {
        try {
            let { data } = await axios
                .post("https://chat.qualpros.com/api/get_tutor_calendar", {
                    tutor_id: 4
                })
                .then(response => {
                    console.log(response.data.data.tutor_private_tution_date_array);
                    if (response.data.data.status === "success") {
                        this.setState({
                            tution_array: response.data.data.tutor_private_tution_date_array,
                            unavailable_array: response.data.data.tutor_schedule_unavailable_array,
                        });
                    } else {
                        alert("Something went wrong");
                    }
                });
        } catch (err) {
            console.log(err);
        }
        // console.log(this.state.tution_array.length);
        //console.log(this.state.tution_array);
        if (this.state.tution_array.length !== 0) {
            console.log('tution available')
            var objP = Object.assign(
                ...this.state.tution_array.map(o => ({
                    [o]: { selected: true, selectedColor: "green", type: "present" }
                }))
            );
            this.setState({ final_array : objP});
            console.log(this.state.final_array)
        }
        // var merged = { ...objP };
        // // console.log("Came Here");
        // this.setState({ final_array: merged });
        // console.log(this.state.final_array)
    }
    render() {
        return (
            <Container>
                <Header style={{ backgroundColor: '#d91009' }}>

                    <Left style={styles.left}>
                        <TouchableOpacity
                            style={styles.backArrow}
                            onPress={() => this.props.navigation.navigate("ProfileScreen")}
                        >
                            <FontAwesome
                                name="angle-left"
                                size={30}
                                color='#fff'
                            />
                        </TouchableOpacity>
                    </Left>
                    <Body>
                        <Text style={{ alignSelf: Platform.OS == 'android' ? 'center' : 'center' }}>Tutor calender</Text>
                    </Body>
                    <Right />
                </Header>

                {/*     <Text style={styles.text}>Calendar with marked dates and hidden arrows</Text> */}
                <Calendar
                    style={styles.calendar}
                    firstDay={1}
                    //markedDates={this.state.final_array}
                //hideArrows={true}
                />
            </Container>
        );
    }
}
export default TutorCalender;

如果我评论markedDates道具,它可以正常工作,对于console.log(this.state.final_array),我将得到如下响应: 对象{   “ 2018-10-01”:对象{     “已选择”:是,     “ selectedColor”:“绿色”,     “ type”:“现在”,   }, }

但是当我取消注释markedDates = {this.state.final_array}时,它给我错误“ TypeError:null不是对象(正在评估“ this.state.final_array”””

我不明白我在哪里错了,我已经按照上面提到的所有步骤操作,在此先感谢

2 个答案:

答案 0 :(得分:0)

This happens when an state has not been updated(loaded) by needed information so the value is null. To solve this, you may set initial value or put a condition to check if your array is not null(before assignment).

答案 1 :(得分:0)

分别定义状态,此处您在静态导航中定义了错误的状态