Javascript 如何迭代异步返回的对象并在react.js中显示它?
我在显示函数调用wait toxica toxica语句的结果时遇到问题。我能得到的最接近的结果是在react插件的组件状态下看到这个更新,但是它没有更新组件本身Javascript 如何迭代异步返回的对象并在react.js中显示它?,javascript,reactjs,Javascript,Reactjs,我在显示函数调用wait toxica toxica语句的结果时遇到问题。我能得到的最接近的结果是在react插件的组件状态下看到这个更新,但是它没有更新组件本身 function ToxicLabels(theObject) { return ( <h2>{theObject.label} match {theObject.results[0].match}</h2> ) } class App extends React.Component { c
function ToxicLabels(theObject) {
return (
<h2>{theObject.label} match {theObject.results[0].match}</h2>
)
}
class App extends React.Component {
constructor(props) {
super(props)
this.state = {
objects: [],
}
}
componentDidMount() {
this.renderThePost()
}
componentDidUpdate(){
render()
}
renderThePost = async () => {
try {
let response = await toxic('you suck')
this.setState({
object: response,
})
// this.state.object.map((object)=>{
// console.log(object)
// ToxicLabels(object)
// })
}catch (err) {
console.log(err)
}
}
render() {
return (
<div>
<h2>Hello {"Hola"}</h2>
{this.state.object.map((object)=> {
console.log(object)
ToxicLabels(object)
})}
</div>
)
}
}
这是可行的
这是我的国家{
对象:response.object,
}
...
{this.state.objects.mapobject=>ToxicLabelsobject}
这是可行的
这是我的国家{
对象:response.object,
}
...
{this.state.objects.mapobject=>ToxicLabelsobject}
这段代码从我这里起作用,只需排除有毒函数并使用您自己的
import React from "react"
const toxic = () => {
return {
"object": [
{
"label": "identity_attack",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "insult",
"results": [
"{match: true, probabilities: Float32Array(2)}"
]
},
{
"label": "obscene",
"results": [
"{match: null, probabilities: Float32Array(2)}"
]
},
{
"label": "severe_toxicity",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "sexual_explicit",
"results": [
"{match: null, probabilities: Float32Array(2)}"
]
},
{
"label": "threat",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "toxicity",
"results": [
"{match: true, probabilities: Float32Array(2)}"
]
}
]
}
}
function ToxicLabels(theObject) {
return (
<h2>{theObject.label} match {theObject.results[0].match}</h2>
)
}
export default class App extends React.Component {
constructor() {
super()
this.state = {
render: false,
objects: [],
}
}
componentDidMount() {
this.renderThePost()
}
componentDidUpdate(){
this.render()
}
renderThePost = async () => {
try {
let response = await toxic('you suck')
console.log( response )
this.setState({
objects: response.object,
render: true
})
// this.state.object.map((object)=>{
// console.log(object)
// ToxicLabels(object)
// })
}catch (err) {
console.log(err)
}
}
render() {
if( !this.state.render ) { return <div></div> }
return (
<div>
<h2>Hello {"Hola"}</h2>
{this.state.objects.map((object) => {
return ToxicLabels(object)
})}
</div>
)
}
}
这段代码从我这里起作用,只需排除有毒函数并使用您自己的
import React from "react"
const toxic = () => {
return {
"object": [
{
"label": "identity_attack",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "insult",
"results": [
"{match: true, probabilities: Float32Array(2)}"
]
},
{
"label": "obscene",
"results": [
"{match: null, probabilities: Float32Array(2)}"
]
},
{
"label": "severe_toxicity",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "sexual_explicit",
"results": [
"{match: null, probabilities: Float32Array(2)}"
]
},
{
"label": "threat",
"results": [
"{match: false, probabilities: Float32Array(2)}"
]
},
{
"label": "toxicity",
"results": [
"{match: true, probabilities: Float32Array(2)}"
]
}
]
}
}
function ToxicLabels(theObject) {
return (
<h2>{theObject.label} match {theObject.results[0].match}</h2>
)
}
export default class App extends React.Component {
constructor() {
super()
this.state = {
render: false,
objects: [],
}
}
componentDidMount() {
this.renderThePost()
}
componentDidUpdate(){
this.render()
}
renderThePost = async () => {
try {
let response = await toxic('you suck')
console.log( response )
this.setState({
objects: response.object,
render: true
})
// this.state.object.map((object)=>{
// console.log(object)
// ToxicLabels(object)
// })
}catch (err) {
console.log(err)
}
}
render() {
if( !this.state.render ) { return <div></div> }
return (
<div>
<h2>Hello {"Hola"}</h2>
{this.state.objects.map((object) => {
return ToxicLabels(object)
})}
</div>
)
}
}
不确定如何将其与react.js连接,因为异步调用的数据被传递到组件的状态,但是组件不更新。您可以映射数据。我确实映射了数据,但它不显示我传递了输出的组件。有毒代码在哪里?您能显示数据的结构吗返回?不确定如何将其与react.js连接,因为来自异步调用的数据被传递到组件的状态,但是组件不更新。您可以映射数据。我确实映射了数据,但它不显示我传递了输出的组件。有毒的代码在哪里?您可以显示返回的数据?控制台上的这个给了我对象:undefinedbecause response中有标签和数组请共享console.logresponse结果。很抱歉,在调用async后,我的代码在设置状态时出错。它是response.object,但在我删除后,它给了我列表为什么不?是的,你可以。控制台上的这个给了我对象:未定义,因为响应中有标签和数组。请共享控制台。logresponse结果。很抱歉,调用async后,我的代码在设置状态时出错。它是响应。对象,但在我删除后,它给了我列表为什么不?是的,你可以。如果我想从一个字段添加用户输入,我需要更改什么吗。我所需要做的就是将值作为道具传递给应用程序组件,对吗?是的,您肯定需要更改某些内容,但我不知道您是如何构建代码的。这听起来像是个新问题。我决不是一个专家,但我通常把应用程序作为我的顶级组件,并从那里把道具传给孩子们。哦,我明白了,我会这么做的,我还没有反应过来。但是,我们的想法是将值作为prop传递,然后运行异步函数,对吗?在这种情况下,实际上不需要这样做,但是如果您有在componentDidMount之前未定义的状态变量,则应用程序可能会崩溃。至于另一个问题,我对你正在尝试做的事情了解不够。那么,让你的表单在你呈现有毒标签并将其作为道具传递下去的级别之上,或者在获得用户输入后设置状态。但老实说,这与最初的问题有很大的偏离。祝你好运如果im要从字段中添加用户输入,是否需要更改任何内容。我所需要做的就是将值作为道具传递给应用程序组件,对吗?是的,您肯定需要更改某些内容,但我不知道您是如何构建代码的。这听起来像是个新问题。我决不是一个专家,但我通常把应用程序作为我的顶级组件,并从那里把道具传给孩子们。哦,我明白了,我会这么做的,我还没有反应过来。但是,我们的想法是将值作为prop传递,然后运行异步函数,对吗?在这种情况下,实际上不需要这样做,但是如果您有在componentDidMount之前未定义的状态变量,则应用程序可能会崩溃。至于另一个问题,我对你正在尝试做的事情了解不够。那么,让你的表单在你呈现有毒标签并将其作为道具传递下去的级别之上,或者在获得用户输入后设置状态。但老实说,这与最初的问题有很大的偏离。祝你好运