Я довольно новичок в React и перебрал множество ответов StackOverflow, но без радости.Поэтому, когда массив сотрудников передается редуктору, а затем компоненту, реквизит в первый раз пуст, а затем содержит данные о последующих рендерах.Кто-нибудь знает, как предотвратить реакцию рендеринга до тех пор, пока реквизиты сотрудников не содержат данных?
-------- Обновление
Поэтому я добавил isloading в исходное состояние редуктора и попытался отправить егок компоненту, но я получаю действительно ужасную ошибку
TypeError: В этой среде источники для назначения ДОЛЖНЫ быть объектом.Эта ошибка является оптимизацией производительности и не соответствует спецификациям
Это мое обновленное описание дела
case EMPLOYEES_FETCH_SUCCESS:
return {
list: action.payload,
isloading: false
}
Новое сообщение об ошибке
Большое спасибо
массив данных выглядит так, когда он заполнен
структура данных
Код редуктора:
import { EMPLOYEES_FETCH_SUCCESS, USER_ADD } from "../actions/types";
const INITIAL_STATE = {};
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case EMPLOYEES_FETCH_SUCCESS:
return action.payload;
case USER_ADD:
return state;
default:
return state;
}
};
это мое действиесправка о доставке
dispatch({ type: EMPLOYEES_FETCH_SUCCESS, payload: returnArray });
Код компонента:
componentWillMount() {
this.props.employeesFetch();
this.createDataSource(this.props);
}
componentWillReceiveProps(nextProps) {
this.createDataSource(nextProps);
}
createDataSource({ employees }) {
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.dataSource = ds.cloneWithRows(employees);
}
onButtonPress() {
Actions.GroupChatContainer(); //Need to send bar's chat record
}
renderRow(employee) {
return <ListItem employee={employee} />;
}
render() {
console.log(this.props.employees);
return (
<View>
<ListView
style={styles.listStyle}
enableEmptySections
dataSource={this.dataSource}
renderRow={this.renderRow}
/>
<Button onPress={this.onButtonPress.bind(this)}>Group chat</Button>
</View>
);
}
}
const mapStateToProps = state => {
console.log(state.employees);
const employees = _.map(state.employees, (val, uid) => {
return { ...val, uid };
});
return { employees };
};