如何呈现孙子并删除JSON对象

时间:2019-03-06 13:36:24

标签: arrays json reactjs

我有一个像

    Array(3)
0: {validationMessage: {…}, id: -2147482623, partTypeId: null, partType: null, partCategoryId: 5, …}
1: {validationMessage: {…}, id: -2147482622, partTypeId: null, partType: null, partCategoryId: 2, …}
2: {validationMessage: {…}, id: -2147482621, partTypeId: null, partType: null, partCategoryId: 5, …}

从insde看起来像这样

Array(3)
0: {validationMessage: {…}, id: -2147482623, partTypeId: null, partType: null, partCategoryId: 5, …}
1:
repairFacility: null
resourcePredictions: null
revision: null
specification: null
validationMessage:
errors: Array(1)
0:
attemptedValue: "147-6268-5715"
customState: null
errorCode: "PredicateValidator"
errorMessage: "This is warning "

[已解决]我的第一个问题我该如何呈现我的验证errorMessage:位于我每个数组元素下的-> validationMessage> errors [0]-> errorMessage 到目前为止,我可以渲染其他元素,这是我的代码。但对于错误消息,它显示未定义x

    <TableBody>
    {this.props.data ? this.props.data.map((item, i) => (

    <TableRow key={i}>
 {
    x = function myFunction(item) {
        if (item.validationMessage.erros[0].length > 0) {
            return item.validationMessage.erros[0].errorMessage
        } else {
            return ''
        }
    }
}
    <TableCell align="right">{x}</TableCell>   ////Want to render ERRORMESSAGE                                                                                                                        
    <TableCell align="right">{item.partNumber}</TableCell>
    <TableCell align="right">{item.description}</TableCell>
    <TableCell align="right">{item.partCategoryId}</TableCell>
    <TableCell align="right">{item.oemPartNumber}</TableCell>
    </TableRow>
    )) : ''}
    </TableBody>

我的第二个问题是 如何从JSON中删除“ validationMessage:”?这是我的尝试

removemsg() {
    const { data } = this.props
    let out = null;
    if (data) {
      out =  data.delete("validationMessage");
    }
}

2 个答案:

答案 0 :(得分:0)

对于第一个问题,您可以简单地在当前拥有{}的{​​{1}}括号内放入if语句(使用三元运算符)。我认为这足够了。我还可以自由地在您的map函数中返回内容。

x

答案 1 :(得分:0)

第一个问题

要仅在数组长度与0不同时才渲染错误,可以使用条件渲染。

长度0不会使用&&运算符返回任何内容,因为它是虚假的:

<TableBody>
{this.props.data && this.props.data.map((item, i) => (
    <TableRow key={i}>
    <TableCell align="right">{item.validationMessage.erros[0].length && item.validationMessage.erros[0].errorMessage}</TableCell>
    <TableCell align="right">{item.partNumber}</TableCell>
    <TableCell align="right">{item.description}</TableCell>
    <TableCell align="right">{item.partCategoryId}</TableCell>
    <TableCell align="right">{item.oemPartNumber}</TableCell>
    </TableRow>
))}
</TableBody>

第二个问题

要从JSON中仅提取给定的变量,可以使用解构,然后使用解构运算符...将对象的所有内容放到变量newData中:

removemsg() {
    const { data = {} } = this.props
    const { validationMessage, ...newData } = data

    console.log(newData)
}

但是,您不能直接修改道具。