我正在为我的项目使用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”””
我不明白我在哪里错了,我已经按照上面提到的所有步骤操作,在此先感谢
答案 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)
分别定义状态,此处您在静态导航中定义了错误的状态