Ich denke Modelle sind notwendig für eine Redux-basierte App wie für jedes andere System.
Modelle sind das Vokabular eines Systems. Modelle bringen Vernunft in die Codebasis. Ohne sie sieht eine Codebasis wie eine Reihe verrückter verzerrter Gedanken aus.
Sie können Statusfunktionen verwenden, um Modelle in ReactJS + Redux-Apps zu füllen. Genau wie Modelle Daten und Methoden enthalten, enthalten diese Objekte nur die Funktionen, die auf den Zustand angewendet werden können.
Lesen Sie hier: https://medium.com/@nshnt/state-functions-for-modeling-with-redux-a9b9d452a631.
ist hier das berühmte Redux ERLEDIGT app Beispiel mit staatlichen Funktionen:
todo_reducer.js:
import TODO from './todo_state';
const todoListReducer = (state=TODO.initialState(), action)=>{
switch(action.type){
case 'ADD_TODO' :
return TODO.addTask(state, action.taskName);
case 'FINISHED_TODO':
return TODO.setFinished(state, action.taskID);
case 'PENDING_TODO':
return TODO.setPending(state, action.taskID);
default :
return state;
}
};
export default todoListReducer;
todo-state.js:
export default {
initialState:() => [],
addTask: (todoList, name)=> todoList.concat({id: todoList.length, name: name}),
setFinished: (todoList, taskId) => (
todoList.map(task=> task.id === taskId ? {...task, complete: true} : task)
),
setPending: (todoList, taskId) => (
todoList.map(task=> task.id === taskId ? {...task, complete: false} : task)
),
pending: todoList=> todoList.filter(task=> !task.complete)
};
ich auch Verwenden Sie diese Statusfunktionen in der Komponente, wenn die Komponente eine Zustandsänderung benötigt.
todo_list.js:
import React from 'react';
import {connect} from 'react-redux';
import TODO from './todo_state';
const TodoList = ({tasks, showCompletedTasks, toggleTodo})=> {
const toListElement = (task) => (
<li key={task.id}>
<input type="checkbox" checked={task.complete} onChange={(e)=> toggleTodo(task)}/>
<label>{task.name} {task.complete ? "Complete" : "Pending"}</label>
</li>
);
const visibleTaskList =
(showCompletedTasks ? tasks
: TODO.pending(tasks)).map(toListElement);
return (
<ul className="todo-list">
{visibleTaskList}
</ul>
);
}
.....
export default connect(mapStateToProps, mapDispatchToProps)(TodoList);
Auf den ersten Blick, die mir wie Zustand zu sein scheint. Welchen Einwand haben Sie, "Name" in Staat zu setzen? –
Der Name selbst ist in der Tat State, aber das "Label" dieser Name Eigenschaft ist nicht Staat. Es handelt sich um Informationen zu den Eigenschaften im Modell. –
Wenn das "Label" des Namens als Requisite in einer Komponente verwendet wird, würde ich sagen, dass es sich um einen Zustand handelt. –