我试图从一个id呈现一个反应原生组件,它被赋予一个超文本传输协议请求,然后返回组件可以使用的json。由于超文本传输协议请求是异步的,因此传递到PostCard呈现中的数据是未定义的。我试图通过等待getSinglePost的返回来解决这个问题,但是数据仍然没有定义。如果不清楚,渲染函数调用renderCard函数,该函数应该等待getSinglePost函数的json,然后返回一个填充的PostCard反应组件。有什么想法吗?
async getSinglePost(id: string) {
try {
let url = preHTT + apiURL + port + 'post/id';
url = url + '?postId=' + id;
const response = await fetch(url, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
});
const responseJson: any = await response.json();
// we should do better error handling gracefully
if (responseJson['status'] === 'ERROR') {
throw 'Could not retrieve data';
}
// console.log(responseJson['payload']);
return responseJson['payload'];
} catch (error) {
console.error(error);
}
}
async renderCard(id: string, type: string) {
if (type === 'post') { ***here***
const data = await this.getSinglePost(id);
return <PostCard data={data} goToProfile={this.moveToProfileScreen}/>;
} else {
return <EventCard goToProfile={this.moveToProfileScreen}/>;
}
}
***render/return stuff above***
{this.state.markers.map((marker:any) => (
<Marker // marker on press function eventually
key={marker['postid']}
coordinate={marker['location']}
image={this.emojiDict[marker['type']]}
>
<Callout>
<View flex>
{this.renderCard(marker['postId'], marker['contentType'])}
</View>
</Callout>
</Marker>
***render/return stuff above***
渲染
是同步的,不会等待异步例程完成。在这种情况下,应在例行程序完成时重新呈现组件。
可按如下方式进行:
async componentDidMount() {
try {
const asyncData = await this.getAsyncData();
this.setState({ asyncData });
} catch (err) {
// handle errors
}
}
render() {
if (this.state.asyncData) {
// render child component that depends on async data
} else {
// initial render
}
}
我想解析数据,我收到的组件加载渲染。 我有这样一种状态: 这个组件安装在: 下面是解析数据的步骤: 问题是,尽管我的数据处于状态,但它并没有在render中进行解析。你知道怎么了吗? 我还有一个错误:索引。js:1警告:列表中的每个孩子都应该有一个唯一的“键”道具。 我的数据是错误的:控制台。日志:
问题内容: 我正在尝试使用React Context将函数传递给嵌套的子组件,这可以有效地允许孩子在按下时更新父状态。 问题是我似乎收到一个错误 ‘TypeError:render不是一个函数。 (在render(newValue)中,render是Array的一个实例” ,控制台中的错误显示为: “警告:使用多个子对象或不是函数的子对象来渲染上下文使用者。上下文使用者期望一个子函数。如果您确实传
如何在组件返回中使用promise函数,如下所示: 因此,结果将是: 即使我在同一个组件中有几个promise,我也必须使用?
我看过其他人提出的与此相关的问题,但找不到合适的答案。我希望将子对象传递给组件,然后在需要它们的地方拉出特定的子对象,我看到的大多数示例都是在相同的位置渲染子对象。 我的组件看起来像这样- 当我记录道具时。父组件中的子组件我得到一个数组,其中包含两个子组件作为对象。是否有一种简单的方法可以在我需要的地方提取特定的子对象,例如我正在使用这并不理想,因为我们将在将来动态传递子元素,并且数组长度可能会更
我想呈现一个消息数组: 此代码适用于: 但是如果我写这样的代码有什么区别: 这里,键在呈现时总是生成随机数。两个版本都适用于我的应用程序。 另外,如果我有1000条消息,那么如果在消息数组中添加了一条额外的消息-,是否所有消息都会重新提交当收到新的时,总是重新发布每条消息,这似乎是应用程序的一大负担。
或者问题应该是,如何将字符串转换为JSX? 在任何情况下,我都试图在我的反应原生应用程序上做一个性能黑客,要求我从字符串变量渲染反应原生组件。 例如, 现在在我的渲染函数中,我想像这样渲染它: 现在,如果我试图运行应用程序,它会给出一个错误,因为我试图在组件中呈现文本。如果我在渲染之前尝试将项目包装在文本中,它只会在屏幕上以纯文本的形式渲染项目,并显示所有