Array.map项目为状态

时间:2017-05-26 19:11:35

标签: javascript arrays reactjs react-native state

如何在其外部获取 array.map 的值?

例如:

array.map(index, item) => { return ( <Text>{item.ID}</Text> ) }

Ouside我有类似的东西:

<Button onPress={() => this.editItem(CURRENT_ITEM_ID)}></Button>

例如,CURRENT_ITEM_ID是卡上的当前项目。

和Tinder一样,我有一系列要刷卡的卡,我映射,但是Like按钮不是卡的一部分。这样我就不会用卡片移动Like按钮,而是静态,我只是移动卡片的内容。所以我需要一种方法来从地图外部访问当前的。该卡有文字和ID。下面的组件有一个Button,我需要点击它来传递当前卡的 item.ID

有没有办法将此项目设置为某个州?

谢谢。

2 个答案:

答案 0 :(得分:1)

一种解决方案是创建一个状态属性来保存正在显示的卡的ID,然后当单击该按钮时,您将获取该状态并对其执行某些操作。这是onClicks和divs的一个例子。

const arr = ['card1', 'card2', 'card3', 'card4'];

class App extends React.Component {
  constructor(props) {
    super(props)
    this.handleClick = this.handleClick.bind(this);
    this.handleButtonClick = this.handleButtonClick.bind(this);
  }
  handleClick(index) {
    this.setState({ visibleCard: index });
  }
  handleButtonClick() {
    console.log('this.state.visibleCard', this.state.visibleCard);
    console.log('visibleCard', arr[this.state.visibleCard]);
  }
  render() {
    return (
      <div>
        {arr.map((card, i) => <div onClick={() => this.handleClick(i)}>{card}</div>)}
        <button onClick={this.handleButtonClick}>test</button>
      </div>
    )
  }
}

基本思路是将索引绑定到卡上。然后处理程序将该状态设置为可见(不确定在您的情况下这将是什么,因为它看起来像一个移动应用程序)。然后在您的按钮中,您使用状态来获取可见卡并将数据传递给您需要的任何其他功能。

答案 1 :(得分:0)

我通常做的是在地图功能中绑定事件。

array.map( (item, key) => {
    return (
        <div>
            <Text>{item.ID}</Text>
            <button onClick={this.editItem.bind(this, item.ID)}>Edit</button> 
        </div>
    )
}

不确定您的HTML是什么样的,但您需要在地图中绑定函数参数。