分配的响应数据显示 [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.errorsArray 这是我的最新更新: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的主要内容,如果未能解决你的问题,请参考以下文章

object层级显示问题

javascript 将JS Object的数据分配给新的JS Object

如何解析 JSON 响应并在 Objective C 中使用它?

Objective-c 解析 JSON 响应

为 Objective-C 数据对象分配内存的问题

Objective C 中对 Console 和 infoView 的不同响应