javascript - React.JS - 多个元素共享一个状态(如何仅修改其中一个元素而不影响其他元素?)

标签 javascript functional-programming react-router reactjs

    class App extends Component {
       constructor(props) {
       super(props);
       this.state = { Card: Card }
      }
      HandleEvent = (props) => {
        this.SetState({Card: Card.Active}
         }
      render() {
       return (
         <Card Card = { this.state.Card } HandleEvent={ 
       this.handleEvent }/>
         <Card Card = { this.state.Card } HandleEvent={
       this.handleEvent }/>
       )
      }
    }
     const Card = props => {
        return (
        <div style={props.state.Card} onClick={ 
            props.HandleEvent}>Example</div>
         )
       }

每次我单击其中一张卡片时,我的所有元素都会更改状态,如何对其进行编程以仅更改我单击的卡片?

最佳答案

这是一个工作示例

import React, { Component } from 'react'
export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      0: false,
      1: false
    };
  }

  handleEvent(idx) {
    const val = !this.state[idx];
    this.setState({[idx]: val});
  }

  render() {
    return (
      <div>
        <Card state={this.state[0]} handleEvent={()=>this.handleEvent(0) } />
        <Card state={this.state[1]} handleEvent={()=>this.handleEvent(1) } />
      </div>
    ); 
  }
}

const Card = (props) => {
  return (<div onClick={() => props.handleEvent()}>state: {props.state.toString()}</div>);
}

您还可以看到它的实际效果 here

显然,这是一个人为的示例,根据您的代码,在现实世界的应用程序中,您不会存储像 {1: true, 2: false} 这样的硬编码状态,但它显示了概念

关于javascript - React.JS - 多个元素共享一个状态(如何仅修改其中一个元素而不影响其他元素?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917249/

相关文章:

javascript - 检查对象和属性是否存在

reactjs - 微前端基于 React/Component 的拆分

reactjs - 如何在 Gatsby 中创建动态路线

javascript - Webpack 编译 React.js 项目失败

javascript - D3 中的可重用函数

javascript - jQuery 点击函数找不到选择器

list - SML:如何确定列表索引是否为空?

scala - 完成部分功能

optimization - 如何迭代总和约为 0 的一组数字的所有子集

reactjs - 使用 React Redux 更新路由更改的状态