我正在尝试使config()运行,但是它以某种方式失败了。
import React, {Component} from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class try1 extends Component {
constructor(noofVertices){
super();
this.noofVertices = this.noofVertices
this.edge = {}
this.a = [];}
addVertex(v){
this.edge[v] = {}
}
addEdge(v, w,weight){
if (weight == undefined) {
weight = 0;
}
this.edge[v][w] = weight;
}
config(){
var vertices = [ 'App0', 'App1', 'App2', 'App3', 'App4' ];
// adding vertices
for (var i = 0; i < vertices.length; i++) {
this.addVertex(vertices[i]);
}
// adding edges
this.addEdge('App0', 'App1',1);
this.addEdge('App0', 'App2',1);
this.addEdge('App0', 'App3',1);
this.addEdge('App0', 'App4',1);
this.addEdge('App1', 'App0',1);
this.addEdge('App1', 'App2',1);
this.addEdge('App1', 'App3',1);
this.addEdge('App1', 'App4',1);
this.addEdge('App2', 'App0',1);
this.addEdge('App2', 'App1',1);
this.addEdge('App2', 'App3',1);
this.addEdge('App2', 'App4',1);
this.addEdge('App3', 'App0',1);
this.addEdge('App3', 'App1',1);
this.addEdge('App3', 'App2',1);
this.addEdge('App3', 'App4',1);
this.addEdge('App4', 'App0',1);
this.addEdge('App4', 'App1',1);
this.addEdge('App4', 'App2',1);
this.addEdge('App4', 'App3',1);
this.traverse('App1');
}
traverse(vertex)
{
for(var adj in this.edge[vertex])
this.a.push(this.edge[vertex][adj])
this.a.sort()
//this.updateEdge1('App0');
}
render(){
return (
<View style={styles.container}>
this.config()
<Text>{this.a}</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
alignItems: 'center',
justifyContent: 'center',
},
}
);
我希望屏幕上显示11111。
它显示错误“不变违反:文本字符串必须在组件中呈现。”
我正在尝试处理图形,我也尝试过地图,但是那没有用。
反应原生支持地图吗?
答案 0 :(得分:0)
您不能传递函数,它会将其解释为字符串值,而View无法呈现文本。
您可以使用生命周期方法执行此功能。
答案 1 :(得分:0)
请注意,您在this.a
组件上的try1
属性是一个数组:this.a = [];
,而您正试图直接在render()
方法中显示此属性,如下所示:{ {1}}。但是,由于以下原因,这会引起问题:
<Text>{this.a}</Text>
方法不支持直接呈现仅数组的返回类型。调用render()
组件的React
方法时,它必须返回以下之一:
render()
和<div />
是React元素,分别指示React渲染DOM节点或另一个用户定义的组件。<MyComponent />
模式,其中test为布尔值。)有关更多信息,请查看<Child />
spec。
此代码中还有其他错误:
render()
重命名为try1
。 Try1
语句之前,因为return语句希望返回实际视图本身。请牢记这些要点,尝试遍历return
并为数组中的每个元素分配一个this.a
元素以供显示,如下所示:
Text
希望有帮助!
答案 2 :(得分:0)
您正在尝试在<Text></Text>
组件中呈现一个数组。您只能呈现纯字符串。
如果要在组件内部显示动态文本,请使用“状态”。这可能对您有帮助:
constructor(props){
super(props);
...
...
this.state = {
a = []
}
}
然后:
render() {
this.config();
return(
<View style={styles.container}>
this.state.a && this.state.a.map(data=> (
<Text>{data}</Text>
));
</View>
)
}
答案 3 :(得分:0)
this.config()是使用jsx编写的函数。 如果要调用config函数,则必须在jsx之外编写。 返回this.config(),将其视为字符串。每个字符串都必须在Text标记内。所以您会看到此错误。
render(){
this.config()
return (
<View style={styles.container}>
<Text>{this.a}</Text>
</View>
);
}