如何在全局变量React Native中设置数组值

时间:2018-01-17 05:33:36

标签: react-native

我正在创建反应原生应用。我想将我的数组值设置为声明为this.state的变量:{current_Cat_id:'',}。我的代码就像: -

render() {
return(
          {this.props.data.map((dataImage,Index)=>
            <View key={Index}>      
                {dataImage['main-head'] != undefined && (
                        <View style={{marginRight:20,marginLeft:20,marginBottom:20,width:320,fontSize:16,color:'#000'}}>
                            {dataImage['main-head'].map((subsubchild, Index3)=>
                                <Text>{subsubchild['cat_name']} ({subsubchild['num_rows']})                             
                            </Text>                                                                         
                            )}
                        </View>                     

                )}  
                </View> 
             )}   
)
}

当我从循环中获取值时,应该在我的变量中设置值,即在this.state中声明。 我试过这样的话:

 {this.props.data.map((dataImage,Index)=>
                <View key={Index}>      
                    {dataImage['main-head'] != undefined && (
                            <View style={{marginRight:20,marginLeft:20,marginBottom:20,width:320,fontSize:16,color:'#000'}}>
                                {dataImage['main-head'].map((subsubchild, Index3)=>
this.setState:({current_cat_id:subsubchild['cat_name']})
                                    <Text>{subsubchild['cat_name']} ({subsubchild['num_rows']})                             
                                </Text>                                                                         
                                )}
                            </View>                     

                    )}  
                    </View> 
                 )} 

但不能成功。我怎么能这样做

1 个答案:

答案 0 :(得分:1)

基兰,

最佳做法是不在render()中修改状态。 render()应该使用state和props来确定呈现的HTML是什么。

如果要根据props设置状态,最好的做法是在构造函数中或在componentWillMount()生命周期方法中。你会做这样的事情:

class ReactClass extends Component {
    constructor(props) {
        super(props)
        this.state = {
            # put initial values of state here or make them depend on props
        }
    }

    componentWillMount() {
        # access this.props here and use this.setState as needed
    }
}

修改

如何尝试使状态基于地图获得数组:

componentWillMount() {
    var ids = [];
    this.props.data.map((dataImage) => {
        ids.push(dataImage['ProductName'])
    })
    this.setState({current_cat_id: ids})
}

这可能无法正常工作,但这是我建议您构建列表然后立即设置状态的一般方法。