【问题标题】:Editing and deleting a card in semantic UI using react.使用 React 在语义 UI 中编辑和删除卡片。
【发布时间】:2018-10-11 01:26:56
【问题描述】:

我正在尝试将用户功能添加到我的卡片中。我已经创建了卡片,并希望用户能够编辑卡片内的数据并在他们愿意的情况下完全删除卡片。

删除应该是这样的 example of deleting a card using jquery 。我是新来的反应并且擅长jquery。我想知道将代码转换为反应代码的步骤是什么。任何建议将不胜感激!

<div class="ui cards">

        {
          sampleUsers.map(user =>
            <div className = "card">
              <div className = "content">
                <div className = "header > {user.name} </div>
                <div className = "description"> 
                  {user.description}
                </div>

                <div clasName = "extra content">
                  <div className = "ui two buttons">
                    <div className = "ui basic green button">Edit</div>
                    <div className = "ui basic red button">Delete</div>
                  </div>
                </div>
              </div>
            </div>

          )
        }
</div>

【问题讨论】:

    标签: javascript reactjs bootstrap-4 semantic-ui


    【解决方案1】:

    一开始 semantic-ui https://react.semantic-ui.com/introduction 对 React 有原生支持,所以我建议你使用它。

    其次我为你创建了一个沙盒

    实时取景:https://n43z9w3o0.codesandbox.io/

    【讨论】:

      【解决方案2】:

      如果不了解您是如何存储 sampleUsers 的,这有点难以回答,但基本上,您会希望向“删除”按钮添加一个点击处理程序,从 sampleUsers 中删除该项目,然后重新渲染。

      这里有一种方法可以帮助您入门。我还没有测试过,但希望对你有帮助!

      class Users extends React.Component {
        constructor() {
          super();
          this.state = {
            sampleUsers: [
              {
                id: 1,
                name: 'John',
                description: 'A nice guy'
              },
              {
                id: 2,
                name: 'Jane',
                description: 'A nice gal'
              }
           ]
         }
       }
      
       handleDeleteUser: (id) => {
         const sampleUsers = this.state.sampleUsers.filter(user => user.id !== id)
         this.setState({ sampleUsers });
       }
      
       render() {
         return (
           <div class="ui cards">
      
            {
              this.state.sampleUsers.map(user =>
                <div className = "card">
                  <div className = "content">
                    <div className = "header > {user.name} </div>
                    <div className = "description"> 
                      {user.description}
                    </div>
      
                    <div clasName="extra content">
                      <div className="ui two buttons">
                        <div className="ui basic green button">Edit</div>
                        <div 
                          className="ui basic red button"
                          onClick={() => this.handleDeleteUser(user.id)}
                        >
                          Delete
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
      
              )
            }
          </div>
         )
       }
      

      更新 正如评论者指出的那样,您可能想查看一个 Semantic React 包装器库。它并没有真正解决您的问题,但很高兴传递https://react.semantic-ui.com

      【讨论】:

      • 非常感谢!这正是我存储 sampleUsers 的方式。
      • Array.filter 不安全,因为它会shuffle 所有元素并且不会保留正确的顺序,它会导致 UI 闪烁并在每次点击时洗牌所有卡片。我已经在我的答案中发布了正确的解决方案
      • @MilosMosovsky 你确定吗?我不假装自己是 Array.filter 方面的专家,但我没有看到任何迹象表明它确实会改变顺序。我在我的应用程序中经常使用过滤器并且从未观察到这种行为(尽管我知道这不一定是证据)developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…stackoverflow.com/questions/39712160/…
      • @torylor 太棒了!欢迎来到反应。我希望你喜欢使用它。正如 MilosMosovsky 提到的,您可能还需要考虑一个 Semantic React 包装器库。为了完整起见,我会将其添加到我的答案中
      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      相关资源
      最近更新 更多