2017-02-13 103 views
0

我正在练习React-Redux。我知道这个问题听起来很简单......但我无法弄清楚如何解决它。我有一个会生成对象的函数。我想将它传递给商店,但我不知道如何在没有用户操作的情况下触发操作(例如,单击按钮)。Redux React - 如何更新没有和用户事件的商店?

const MyComponentA =() => (
    <BuiltInCompoment propA={data} propB={ FunctionA } /> 
) 
function FunctionA(object) { 
     ... 
     FunctionB(object.property) 
} 

函数FunctionB将返回一个对象(或者可能是JSON文件)。那么如何将该对象(或json)传递给商店 - 以便在另一个组件中使用它?

下面我显示了我的最后一次尝试。我知道这是错误的,并没有太多意义。但是,它可能会澄清我想要的更多(传递数据以存储以便将其呈现在不是容器子项的其他组件中)。 “BiultInComponent”不能修改为包含prop“resultsData”。我是一个新手,所以很可能我错了一些观点/假设。

class MyContainerA extends Component { 
     render() 
     return (
      <BuiltInCompoment propA={data} propB={ FunctionA } /> 
     ) 
    } 

    function matchDispatchToProps(dispatch){ 
     return bindActionCreators({resultingData: resultingData}, dispatch); 
    } 

function FunctionA(object) { 

     ... 
     var dataToPassToStore = FunctionB(object.property); 
     return this.props.resultingData(dataToPassToStore) 
} 

exports default connect(matchDispatchToProps)(MyContainerA) 

任何建议将受到欢迎。谢谢。

+0

为组件绑定一个动作,你可以通过prop来调用你的动作。 – Win

+0

组件只存在显示数据和处理事件(点击,ajax响应等)。在什么情况下你想把这个物品传递给你的商店?页面加载?初始状态?几乎一切都是某种“事件” – azium

+0

感谢您的回答@Win。我刚刚添加了一个我拥有的例子。 – Dubliner

回答

0

调查调查actionsreducers。我相信这些都是redux的核心,它们将帮助你实现你想要做的事情。

+0

Hi @Patrick。谢谢你的评论。我已经有一个减速器和一个动作。我无法弄清楚的是如何将它传递给商店。我应该创建一个容器MyContainerA而不是MyComponentA吗?这可能是一件非常简单的事情......但我可以看到它。我读了关于dispatch和bindActionCreator ... – Dubliner

+0

MyComponentA是否连接到商店? – patrick

+0

Hi @Patrick。不,它不是。它会帮助,如果它将被连接?假设是一种使用FunctionB抓取和处理数据的表单。我想在应用程序的其他部分渲染已处理的数据。这就是为什么我需要将它传递给商店。 – Dubliner