我一直在搜索一整天,以便通过从我的产品列表中选择它来更新我的ShoppingCart(this.props.shoppingCart)一个新项目(this.props.products)..
我找到了一种方法,但它似乎非常麻烦和复杂,这就像使用Dispatchers一样:
如果我没错,这还需要npm-package flex,而node.js?这并不理想,因为我使用的是Visual Studio和ReactJS.NET ..
那么......如何在地球上我能以简单易懂的方式做到这一点吗?
Global Dispatcher:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="always"/>
<item
android:id="@+id/imgAdd"
android:title="@string/CreatePost"
android:orderInCategory="200"
android:icon="@android:drawable/ic_menu_add"
app:showAsAction="always"></item>
<item
android:id="@+id/menu_search"
android:title="menu_search"
android:orderInCategory="300"
appcompat:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always"/>
</menu>
用法:
var ShoppingCartStore = {
shoppingCart: [],
dispatcher: new Dispatcher(),
addToCart: function (item) {
this.shoppingCart.push(item);
this.dispatcher.dispatch({
actionType: 'updated',
data: this.shoppingCart
});
},
};
如何更新?
addToCart: function (e) {
var shoppingCartItem = {
name: this.props.productData.name,
price: this.props.productData.price,
description: this.props.productData.description
};
ShoppingCartStore.dispatcher.subscribe(function () {
});
ShoppingCartStore.addToCart(shoppingCartItem);
},
答案 0 :(得分:2)
听起来您正在尝试实施Flux。
假设您不想使用Flux:
string fetchQuery = @"--my fetchXML here...--";
FetchExpression fetchTestParameters = new FetchExpression(fetchQuery);
EntityCollection testParameters = context.RetrieveMultiple(fetchTestParameters);
foreach (var testParameter in testParameters.Entities)
{
switch (testParameter.cs_testcalculation["name"])
{
case "Addition":
//do something...
case "Subtraction":
//do something else...
...
}
}
请记住继续把事情当成道具。将状态保持在组件层次结构中尽可能高,并尽可能少地使用它。如果这些组件无法由单个有状态组件包装,则可能需要找到不同的解决方案。
抱歉,我不懂.NET,所以这是JS,但概念仍然适用!