小编Zha*_*hao的帖子

反应条件渲染模式

我已经实现了一个模态组件,在屏幕上显示模式对话框.通常,模态将有条件地显示.我可以通过两种方式在render函数中执行此操作:

render(){
    ...
    <Modal show={this.state.showModal}>
        // something in modal
    </Modal>
}
Run Code Online (Sandbox Code Playgroud)

在Modal组件中,我使用this.props.show为自己添加一个不同的类.如果为false,则会添加display:none来隐藏模态.

另一种方式是这样的:

render(){
    ...
    { this.state.showModal &&
        (<Modal>
            // something in modal
        </Modal>)
    }
}
Run Code Online (Sandbox Code Playgroud)

这用于showModal决定是否在渲染中添加模态.

我想弄清楚的是:

  1. 这两种方式有什么不同?
  2. 其中一个比另一个好吗?
  3. 还有另一种方法吗?

编辑:似乎不同的人有不同的偏好.对我来说,我更喜欢@ErikTheDeveloper所说的.显示/隐藏模态的功能应该保留在模态中,当我们不需要显示模态时,我们可以在模态中返回null.

我想也许没有一个答案,哪种方式更好.也许这只是个人选择?

javascript reactjs

20
推荐指数
3
解决办法
3614
查看次数

回流动作执行后触发通知/回调

我最近在我的项目中使用了回流,这是一个让我很困惑的问题。
作为回流模式,我在我的 React 组件中调用动作,并在我的回流存储中获取正在监听动作的远程数据。我的组件会监听存储中数据的变化。例如获取项目列表。到目前为止还好。
但有时,我想要一个通知,告诉我该操作已成功执行。
例如,我有一个 UserStore、一个 UserActions 和一个监听 UserStore 的 LoginComponent。当用户输入用户名和密码并单击提交按钮时,LoginComponent 调用 UserActions.login(),然后我在 UserStore 中发送登录请求。登录成功后,UserStore 从响应中获取用户信息。
这个时候我想在LoginComponent中给出'Login Success'这样的提示。我有两种方法可以做到,但我认为这两种方法都不够好。

  1. 在 UserStore 的数据中给出一个标志然后触发更改。当 UserStore 触发数据更改事件时,LoginComponent 获取此标志,然后提示。因为 UserStore 不仅会在登录成功时触发数据更改,还会在其他一些情况下触发数据更改,例如从 cookie 或 sessionStorage 获取用户信息,LoginComponent 必须为此登录成功标志添加一个 if-else,如果登录成功则提示。
    我认为这不是一个好的模式,因为该标志仅用于提示,而不是像用户信息这样的真实数据。如果我还想在用户更改密码后提示,我将需要另一个标志字段。
  2. 传递一个promise(或回调函数)给UserAction调用,登录成功后解析这个promise,LoginComponent就可以在promise.then中提示。看起来比第一个好,但是是不是有点反模式,因为通过action传递给商店的promise可能会打破单向回流?

我想问的是:解决这个问题的常见/适当方法是什么?

我不是来自英语地区,也不擅长英语表达。这是我在 stackoverflow.com 上的第一个问题。我不太确定我是否清楚地描述了我的问题。所以如果你对这个问题有一些建议,请告诉我,我会改进它以帮助其他关心这个问题的人。非常感谢!

javascript reactjs refluxjs

5
推荐指数
1
解决办法
440
查看次数

标签 统计

javascript ×2

reactjs ×2

refluxjs ×1