ListView X Basic Redux

https://github.com/ycj1905/react-native-redux
ListView

What, Why

不會一次把所有數據顯示出來,而是有在螢幕上的資料他才會顯示出來,所以在效能上會比較好。
How
componentWillMount() {
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 != r2
});
this.dataSource = ds.cloneWithRows(this.props.Users);
}
import { ListView } from 'react-native';
render() {
return (
<ListView
dataSource={this.dataSource}
renderRow={this.renderRow}
/>
)
}
renderRow(user) {
return <ListItem user={user} />
}
dataSource:
此ListView 要顯示的所有資料
renderRow:
每個 item 如何 render
Redux

Philosophy
(1) Web 是一個狀態機, View 與 State 是一一對應
(2) 所有狀態, 保存在一個 Object 裡


Create Store
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import reducers from './src/store/reducers'
const store = createStore(reducers);
render() {
return (
<Provider store={store}>
<View style={{ flex:1 }}>
<Header/>
<Employees />
</View>
</Provider>
);
}
React Cmp Redux Store

CONNECT
import { connect } from 'react-redux';
const mapStateToProps = state => {
return { libraries: state.libraries };
}
export default connect(mapStateToProps)(Component);
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
Reducer/ Action
export const selectEmployee = (id) => {
return {
type: 'select_employee',
payload: id
};
};
import { combineReducers } from "redux";
import EmployeesReducer from './EmployeesReducer';
import SelectionReducer from './SelectionReducer';
export default combineReducers({
employees: EmployeesReducer,
selectedEmployeeId: SelectionReducer
});
import data from '../../employees.json'
export default () => data;
export default (state=null, action) => {
switch (action.type) {
case 'select_employee':
return action.payload
default:
return state;
}
}
combineReducers
EmployeesReducer
SelectionReducer
Create Action: return Object
Pure Function
reducer(previosState, action){return newState}

看看
React-Native Redux
https://www.cnblogs.com/miaomiaoshen/p/6757625.html
阮一峰: Redux
http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html
Reucer 命名
https://zhuanlan.zhihu.com/p/25863768
Reucer 介紹
https://medium.com/4cats-io/%E6%B7%B1%E5%85%A5%E6%B7%BA%E5%87%BA-redux-7b08403c4957
React Native X Redux
By Matt Jhou
React Native X Redux
- 310