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

Wah*_*ief 2 javascript json reactjs laravel-5 react-native

我在迭代从服务器端(Laravel)获得的验证错误时遇到问题。我可以得到错误响应并在状态错误数组中分配。但是当我console.log的状态时,它显示了我[对象]。所以我无法迭代数组。你们能帮忙吗?

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);
        });
Run Code Online (Sandbox Code Playgroud)

//在渲染函数中,我已完成以下代码以显示验证错误

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

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

Lin*_*E V 6

它不应该是newState.push(response.data.errors)不是newState.push(response.data)

另外,在打印JSON对象时,您需要使用JSON.stringify。所以console.log(JSON.stringify(this.state.errors))JSON以可读string格式显示


aqs*_*had 5

与你的问题无关,但对我来说,它显示为[对象对象]是一个相当可悲的原因。请参阅下面的区别。

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