从父组件中生成生成列表的本机/ Redux状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从父组件中生成生成列表的本机/ Redux状态相关的知识,希望对你有一定的参考价值。

我有一个我正在使用的React-Native组件,其中包含一个列表,其中包含每个项目列表中的状态。我希望从每个项目获得的状态是它是否“检查”。

在父组件中,我有按钮,然后是生成的列表,然后使用子组件为列表项构建。我如何制作它,以便在单击按钮时,它可以注销是否“检查”每个项目的状态。

我的目的是创建一个项目列表,以保存项目是否被选中。

import React, { Component } from 'react';
import { View, 
  Platform, 
  Image, 
  Text, 
  Button, 
  ScrollView, 
  ListView,
  AsyncStorage
} from 'react-native';
import { connect } from 'react-redux';


import Expo from 'expo';
import SettingsTeams from '../components/SettingsTeams';

import { STATUS_BAR_HEIGHT, SCREEN_WIDTH } from '../constants';




class Settings extends Component {

  componentWillMount() {
    const ds = new ListView.DataSource({
      rowHasChanged: (r1, r2) => r1 !== r2
    });

    this.dataSource = ds.cloneWithRows(this.props.leagueteams.MLS);
  }

  renderRow(leagueteams) {
    return <SettingsTeams leagueteams={leagueteams} />;
  }

  state = {
    appIsReady: false
  }

  render() {
    console.log("props", this.props.leagueteams.MLS, "EPL", this.props.leagueteams.EPL)
    const { leagueteams } = this.props.leagueteams

    const { listStyle, listBuffer,saveButton, buttonContainer } = styles;

    return (
      <View style={listStyle}>
        <View style={buttonContainer}>
          <Button 
            title="Save Selection"
            color="#FFFFFF"
            onPress= {() => console.log("button pressed")}
            style= {saveButton} />
        </View>

        <View style={listBuffer}>
          <ListView
          dataSource={this.dataSource}
          renderRow={this.renderRow}
          />
        </View>
      </View>

    );
  }
}

const mapStateToProps = state => {
  return { leagueteams: state.leagueteams };
};

export default connect(mapStateToProps) (Settings);
答案

听起来您可能想要将项目的checked状态提升到Settings组件,或者,因为您使用的是Redux,所以使用存储而不是组件状态。管理checked状态是通过将值传递到列表项并在Settings组件中处理onChange事件来完成的。然后,当您在“设置”组件中按下按钮时,您可以从“设置”状态或“Redux”存储中读取checked状态,无论您选择哪个。在单个列表项中维护checked状态使得在按下按钮时难以从父级访问。有关更详细的解释,请参阅Lifting State Up上的官方文档(Web示例,但适用相同的原理)。

以上是关于从父组件中生成生成列表的本机/ Redux状态的主要内容,如果未能解决你的问题,请参考以下文章

Redux 面试题

在 ReactJs 中,从 redux 存储或从父级到子级将 props 传递给子组件的最佳实践是啥?

如何在访问报告中生成列表?

即使从父组件传递函数后也无法从子组件更改状态

react redux typescript:无法将继承的道具从父级传递到类容器

在 React 组件中生成输入