分配的响应数据显示[对象对象] React Native

时间:2017-10-23 11:17:26

标签: javascript json reactjs laravel-5 react-native

我遇到了从服务器端(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函数中我已经完成了以下代码来显示验证错误

render() {
    <Errors errors={this.state.errors} />
}

const Errors = (props) => {
    return (
        <View>{props.errors.map((error, i) => <Text key={i}>{error}</Text>)}</View>
    );
}

2 个答案:

答案 0 :(得分:4)

不应该是 <?php $id = isset($_GET['id']) ? (int)$_GET['id'] : 0; $img = $id; foreach(glob("gallery3/var/albums/" . $img) as $filename) ?> <img src = " <?php echo $filename; ?> " /> 而不是newState.push(response.data.errors)吗?

此外,在打印newState.push(response.data)个对象时,您需要使用JSON。因此JSON.stringify会以可读的console.log(JSON.stringify(this.state.errors))格式显示JSON

答案 1 :(得分:0)

  

与您的问题无关,但对我来说,这是一个可悲的原因   为什么显示为[Object Object]。请参见以下区别。

componentWillReceiveProps(nextProps) {       
   console.log("Data"+nextProps.payload.payloadData); // Display [Object Object]
   console.log(nextProps.payload.payloadData);  //  Display proper list
}