我来自Reflux到Redux.在Reflux中你的业务逻辑只存在于商店中,但在Redux中它似乎不同......例如在" Redux "中,我有"async-action",我用" redux-thunk " 实现它.
在一个场景中,我想在我的操作中检查一些内容,如果需要我向服务器发送请求并获取一些数据.在这种情况下,我必须在我的行动中检查我的逻辑,实际上我的业务逻辑存在于行动中并存储在一起并且它不好......你的解决方案是什么?
例如我有复选框,我检查一些条件,如果结果是真的我发送请求到服务器这里是我的动作代码,因为你看到我的业务逻辑是在我的行动和我的减速机:
export function onCheckboxClick({itemId}) {
return (dispatch, getState) => {
let state = getState().get('myReducer');
let myConditionResult = state.get('foods').get(0).get('test');//for exmaple check some condition in my store
dispatch({type: 'CHECKBOX_CLICK', itemId});// for change the checkbox checked
if (myConditionResult) {
myApi.deleteOrderItem({itemId}).then(()=> {
dispatch({type: 'DELETE_ORDER_ITEM_FULFILLED', itemId});
}).catch((err)=> {
console.log(err);
dispatch({type: 'DELETE_ORDER_ITEM_REJECTED', itemId});
});
}
};
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
这是我的组成部分:
const styles = {
menuContainer: {
flex: 1,
flexDirection: 'column'
},
menuItem: {
flex: 1,
borderRadius: ??
}
}
<View style={styles.menuContainer}>
<TouchableOpacity {styles.menuItem}/>
<TouchableOpacity {styles.menuItem}/>
</View>
Run Code Online (Sandbox Code Playgroud)
bordeRadius in react native不能像50%这样的百分比工作,而在flex框中我不知道每个flexItem的宽度.你有什么想法没有计算每个flexItem的宽度?
如您所见,菜单中的所有项目都在右侧,"SubHeader"除外.
如何将"SubHeader"项目移动到此菜单的右侧?我使用所有属性,如重力,布局重力,layoutDirection到SubHeaderItem,但它不起作用.
我的代码是
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/navigation_view"
android:layout_gravity="end"
android:fitsSystemWindows="true"
android:layoutDirection="rtl"
app:headerLayout="@layout/navigation_header"
app:menu="@menu/navigation_menu"
/>
Run Code Online (Sandbox Code Playgroud)
我的菜单代码是:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<group android:checkableBehavior="single">
<item
android:title="inbox"
android:id="@+id/inbox_id"
android:icon="@drawable/inbox" />
</group>
<item android:title="SubHeader">
<menu>
<item
android:title="all main"
android:id="@+id/all_mail"
android:icon="@drawable/allmail" />
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud) 我使用I18nManager.forceRTL(true)ininitialState或componentDidMount生命周期但它不起作用,如果我重新加载我的应用程序,它会起作用。
我的意思是我必须重新加载应用程序才能看到效果,这是什么原因?
提前致谢
NavigationActions支持下面的操作,但是当我们访问辅助函数时,我无法理解每个操作的用法this.props.navigation.
那么我们为什么要进口NavigationActions呢?
提前致谢.