分配的响应数据显示 [object object] React Native
Posted
技术标签:
【中文标题】分配的响应数据显示 [object object] React Native【英文标题】:Assigned response data show [object object] React Native 【发布时间】:2018-04-03 22:12:14 【问题描述】:我在迭代从服务器端 (Laravel) 获得的验证错误时遇到问题。我可以获得错误响应并在状态错误数组中分配。但是当我 console.log 显示状态时,它显示了我 [obeject object]。所以我无法迭代数组。你们可以帮忙吗?
constructor(props)
super(props);
this.state=
userName:'',
userEmail:'',
userPassword:'',
errors:[]
axios(
method: 'post',
url: API_URL+'signup',
data:
username: userName,
email: userEmail,
password: userPassword
)
.then((response) =>
var count = Object.keys(response.data.errors).length;
if (count > 0)
console.log(response.data);
var newState = [];
newState.push(response.data);
this.setState(
errors: newState
)
console.log("error = " + this.state.errors); // console output: error = [object Object]
)
.catch((error) =>
console.log(error);
);
// 在渲染函数中我已经完成了以下代码来显示验证错误
render()
<Errors errors=this.state.errors />
const Errors = (props) =>
return (
<View>props.errors.map((error, i) => <Text key=i>error</Text>)</View>
);
【问题讨论】:
【参考方案1】:与您的问题无关,但对我来说这是一个非常可悲的原因 为什么它显示为 [Object Object]。请参阅下面的区别。
componentWillReceiveProps(nextProps)
console.log("Data"+nextProps.payload.payloadData); // Display [Object Object]
console.log(nextProps.payload.payloadData); // Display proper list
【讨论】:
这个答案值得更多的支持!谁能解释为什么对象道具不能与字符串结合在一起?【参考方案2】:不应该是newState.push(response.data.errors)
而不是newState.push(response.data)
吗?
另外,打印JSON
对象时,需要使用JSON.stringify
。所以console.log(JSON.stringify(this.state.errors))
会以可读的string
格式显示JSON
【讨论】:
是的,现在我更新:newState.push(JSON.stringify(response.data.errors));和 console.log(this.state.errors) ...它工作正常。但是状态更新时不会在视图中显示错误。 @Lingaraju E V 你能给我看一个来自AJAX
请求的响应示例吗?您是否将newState.push(response.data)
更新为newState.push(response.data.errors)
?我假设response.data.errors
是Array
这是我的最新更新:paste.laravel.io/cad3a4d1-767a-4aa0-8190-3239ec8ccb03
您好,我已经更新了您的代码。请检查一下。怀疑您的response.data.errors
不是Array
。所以你不能只在上面使用Array.map
。我使用Object.keys
枚举了errors
对象中的所有keys
并打印了它们各自的error
消息。 paste.laravel.io/90b7baa5-09d4-4c6e-9bab-dc006fe20737
非常感谢。但是您在 then() 中的更改而不只是分配是行不通的。它在控制台中显示“error = [object Object]”。我已将状态错误声明为数组。您可以在我上面的代码中看到。并且 UI 不会因任何更改而更新。以上是关于分配的响应数据显示 [object object] React Native的主要内容,如果未能解决你的问题,请参考以下文章
javascript 将JS Object的数据分配给新的JS Object