【问题标题】:React-Native-Component not rendering when state is changed状态更改时 React-Native-Component 不呈现
【发布时间】:2019-12-04 12:12:25
【问题描述】:

我在平面列表中显示更多并显示更少的功能,但按下的状态没有按预期工作。当我设置状态值时,当状态改变其值时,组件不会被呈现。

我的构造函数设置如下

this.state = {
            accList: [],
            expanded: false,
            expandedText: "Show More"
        }

在 componentdidmount() 中,我正在更新 accList 的值,如下所示

componentDidMount = () => {
      this.setState({
accList:[{
    "customer_name": "Shubhangi J Thakur",
    "message":"Hello"
},
{
    "customer_name": "Arthur S Campbell",
    "message":"Hello_World"
},
{

    "customer_name": "Susan R Brill",
    "message":"hellow"
}]
});

    }

我已经在 render() 中定义了平面列表,如下所示

<FlatList
     onScroll={this.handleScroll}
     data={this.state.accList}
       renderItem={this.renderItem}
        keyExtractor={this._keyExtractor}
    />

    renderItem = ({ item, index }) => (
        <Card style={style.cardLayout} key={index}>
            <CardItem header>

              <Text>{item.customer_name}</Text>

            </CardItem>
            {this.seemorefunctionality(item)}

        </Card>
    );


    seemorefunctionality = (item) => {

              return <View>

            {this.state.expanded ? this.expandedView(item) :null}
//To view Show More and Show Less Text
                <TouchableOpacity onPress={this.expandedText}>
                 <Text> {this.state.expandedText}</Text>
                </TouchableOpacity>
              </View>

            }
          } 



expandedText = () => {
        console.log('Setting the expanded text value', this.state.expanded)
         if (this.state.expanded) {
           this.setState({
             expandedText: "Show More"
           });
         }
         else {
           this.setState({
             expandedText: "Show Less"
           });
         }
         value=!this.state.expanded
         this.setState({
           expanded: value

         });
       }


expandedView = (item) => {
        return   <View>
             {item.map((obj, index) => {
               return (
                 <View key={index} >
                 <Text>{obj.message}</Text>
                 </View>
               )
             })}
           </View>

当我单击 this.state.expandedText 值时,我们在控制台中看到它的值发生了变化,但它没有反映在视图中,当 this.state.expanded 设置为 true 时,expandView 也没有被呈现。
在 View 中 this.state.expandedText 的值总是显示 Show More 而我可以在控制台中看到该值正在更改为 Show more and Show Less on click

【问题讨论】:

  • 你在style.cardLayout中添加了哪些样式

标签: react-native


【解决方案1】:

要重新呈现平面列表,您必须添加 extraData={this.state} 作为 https://facebook.github.io/react-native/docs/flatlist

上的提及

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2016-11-09
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2020-11-20
    • 2021-11-24
    相关资源
    最近更新 更多