reactjs - 不知道如何在本机反应中调试这些错误
问题描述
以下是返回的错误'警告:React.createElement:类型无效 - 期望字符串(对于内置组件)或类/函数(对于复合组件)但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。此错误专门告诉我查看代码中的“日期”和“画布”元素定义。另外,说要检查“应用程序”的渲染方法。
import React, {Component} from 'react';
import "react-native-dates";
import { Dates } from "react-native-dates";
import {moment} from "moment";
import {Chart} from "react-native-chartjs";
import {Canvas} from 'react-native-canvas';
import {
SafeAreaView,
StyleSheet,
ScrollView,
View,
Text,
StatusBar,
} from 'react-native';
import {
Header,
LearnMoreLinks,
Colors,
DebugInstructions,
ReloadInstructions,
} from 'react-native/Libraries/NewAppScreen';
export default class App extends React.Component {
constructor(props) {
super(props);
this.chart = null;
this.state = {
startDate: null,
endDate: null,
focusedInput: null,
dates: []
};
this.handleDatesChange = this.handleDatesChange.bind(this);
this.handleFocusChange = this.handleFocusChange.bind(this);
this.updateChart = this.updateChart.bind(this);
}
componentDidMount() {
this.chart = new Chart(this.node, {
type: "line",
data: {
labels: [],
datasets: [
{
label: "# of Likes",
data: [],
backgroundColor: [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)",
"rgba(255, 206, 86, 0.2)"
]
}
]
}
});
}
handleDatesChange({ startDate, endDate }) {
let dates = [];
for (
let m = moment(startDate);
m.diff(moment(endDate), "days") <= 0;
m.add(1, "days")
) {
dates.push(m.format("YYYY-MM-DD"));
}
this.setState({ startDate, endDate, dates }, () => {
let data = this.randomData(this.state.dates.length);
this.updateChart(this.state.dates, data);
});
}
handleFocusChange(focusedInput) {
this.setState({ focusedInput });
}
updateChart(labels, data) {
this.chart.data.labels = labels;
this.chart.data.datasets[0].data = data;
this.chart.update();
}
randomData(length) {
let data = [];
for (let i = 0; i < length; i++) {
data.push(Math.floor(Math.random() * 100) + 1);
}
return data;
}
render() {
return (
<View style={styles.container} >
<Dates
startDateId="startDate"
endDateId="endDate"
startDate={this.state.startDate}
endDate={this.state.endDate}
onDatesChange={this.handleDatesChange}
focusedInput={this.state.focusedInput}
onFocusChange={this.handleFocusChange}
/>
<Canvas ref={node => (this.node = node)} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#FFFFFF'
},
});
解决方案
导入您的Dates
和Canvas
作为默认模块:
import Dates from 'react-native-dates';
import Canvas from 'react-native-canvas';
推荐阅读
- javascript - Shadow Dom 支持制表符表
- google-cloud-platform - 将 GCP Cloud IAM 自定义角色的访问权限仅限于存储桶
- css - 在 Angular (CSS) 中使用网格
- facebook-graph-api - 有没有办法使用 facebook API 获取用户的工作历史记录?
- django - 如何在 django 中保存生成 otp 代码
- git - 在本地删除特定的提交
- r - 映射列并应用自定义函数
- reactjs - 有没有办法更改组件中的排版默认值?
- css - NuxtJS css 提取如何用于生成的静态网站?
- xml - XSLT3 未命名的 xsl:mode on-no-match 行为是否应该应用于没有模式匹配但模式在应用模板上指定的元素?