javascript - React应用程序中的数据流

标签 javascript reactjs single-page-application flux

我目前正在学习 React,我遇到了从我的组件中优雅地提取状态的问题。

基本上我有一些组件,其中包含表单和其他输入,我需要从中获取业务逻辑中的数据,我需要的数据与组件的状态相结合。据我了解,数据应该具有单向流,但我想不出如何让我的数据流回我的业务逻辑。我可以只做一些调用各自的接口(interface)函数,但我觉得这会违反单向流。

如有任何帮助,我们将不胜感激!

最佳答案

您通常将回调作为 props 从父组件传递到子组件。当任何子组件的状态发生变化时,它会调用该回调并传递适合每个用例的任何数据。您的“ Controller View ”(实现实际回调的根组件)然后根据当前状态执行您需要的任何业务逻辑,然后相应地更新其状态(导致从该组件向下重新呈现组件树)。阅读有关 component communication 的文档.

像这样:

var Child = React.createClass({
    onTextChange: function() {
         var val = 13; // somehow calculate new value
         this.props.onTextChange(val);
    },
    render: function() {
        return <input type="text" value={this.props.val} onChange={this.onTextChange} />
    }
});

var Parent = React.createClass({
    onTextChange: function(val) {
         var newVal = someBusinessLogic(val);
         this.setState({val: newVal});
    },
    render: function() {
        return <Child onTextChange={this.onTextChange} val={this.state.val} />
    }
});

关于javascript - React应用程序中的数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31566872/

相关文章:

javascript - 如何构建一个轻量级的在线文本编辑器?

javascript - 使用react js隐藏行的特定元素

reactjs - 在 React Router 4 中单击 Material ui 表行时需要导航链接

javascript - 是的,使用匹配问题使用正则表达式进行验证

knockout.js - 在 Durandal/SPA 应用程序中配置 Knockout 验证

javascript - 在复选框单击事件中使用 preventDefault

javascript - Marionette onAttach 生命周期在测试期间未触发

javascript - 如何在javascript中对两个不同的函数求和

javascript - SPA 具有 Angular 和基于 cookie 的身份验证

asp.net-mvc - Visual Studio 不将 html/javascript 更新到服务器/浏览器