Я пытаюсь запустить 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 будет отображаться на экране.
Он показывает ошибку «Нарушение инварианта: текстовые строки должны отображаться внутри компонента».
Я пытаюсь иметь дело с графиками, я также пробовал карты, но это не сработало.
Поддерживает ли React Native карты?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете передать функцию взамен, она интерпретирует ее как строковое значение, а View не может отображать текст.
Вы можете использовать методы жизненного цикла для выполнения этой функции.
Обратите внимание, что ваше свойство this.a в вашем компоненте try1 представляет собой массив: this.a = [];, и вы пытаетесь отобразить это свойство непосредственно в своем методе render(), например: <Text>{this.a}</Text>. Однако это вызывает проблемы, поскольку:
Метод render()не поддерживает рендеринг возвращаемого типа только массива напрямую. Когда вы вызываете метод React компонента render(), он должен возвращать одно из следующих значений:
<div /> и <MyComponent /> — это элементы React, которые предписывают React отображать узел DOM или другой пользовательский компонент соответственно.<Child />, где test является логическим.)Для получения дополнительной информации ознакомьтесь с render()спец..
В этом коде также есть другая ошибка:
try1 в Try1.return, так как оператор возврата ожидает фактический вид, который будет возвращен.Имея это в виду, попробуйте пройтись по this.a и дать каждому элементу в массиве элемент Text для отображения, что-то вроде следующего:
render() {
this.config();
let aEles = this.a;
return(
<View style = {styles.container}>
aEles.map(edge => (
<Text>{edge}</Text>
));
</View>
)
}
Надеюсь, это поможет!
Вы пытаетесь отобразить массив внутри компонента <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>
)
}
this.config() — это функция, которую вы пишете в jsx. если вы хотите вызвать функцию конфигурации, вы должны писать вне jsx. this.config() в свою очередь рассматривается как строка. каждая строка должна быть внутри текстового тега. так что вы видите эту ошибку.
render(){
this.config()
return (
<View style = {styles.container}>
<Text>{this.a}</Text>
</View>
);
}
Если вы используете некоторые условные операторы, используйте тернарные операторы. Если вы используете &&, а затем передаете компонент после этого, это приведет к ошибке. Смотрите ниже, какой у меня был код. Вот Подача — мой компонент:
Before
{userId && <Feed posts = {posts}/> } // this will give you an error
After
{userId ? <Feed posts = {posts}/> : null} // this works fine
Так что, возможно, у вас есть такая проблема с вашим кодом. Посмотрите сейчас.