Для useMemo
и useCallback
(что по сути является просто частным случаем useMemo
), если второй аргумент является пустым массивом, значение запоминается один раз и всегда возвращается.
Если второй аргумент опущен, значение никогда не запоминается, а useCallback
и useMemo
ничего не делают.
Возможно, есть какой-то крайний случай, когда вы можете условно запомнить:
useMemo(someValue, shouldMemoize ? [] : null)
Но в подавляющем большинстве случаев второй аргумент как useMemo
, так и useCallback
следует считать обязательным. И действительно, определения Typescript относятся к ним таким образом .
// Require a second argument, and it must be an array
function useCallback any>(callback: T, deps: DependencyList): T;
// Second argument can be undefined, but must be explicitly passed as undefined, not omitted.
function useMemo(factory: () => T, deps: DependencyList | undefined): T;
Существует открытый запрос на извлечение , который расширяет правило exhaustive-deps
перехвата хуков, так что он вызовет ошибку lint, если второй аргумент пропущен, так что довольно скоро это будет быть ошибкой линтера.
@ModelAttribute
относится к свойству объекта модели (M в MVC;)
Итак, допустим, у нас есть форма с объектом поддержки формы, который называется "Человек".
Затем вы можете заставить Spring MVC передать этот объект методу контроллера с помощью аннотации @ModelAttribute
:
public String processForm(@ModelAttribute("person") Person person){
person.getStuff();
}
С другой стороны, аннотация используется для определения объектов, которые должны быть частью модели. Поэтому, если вы хотите, чтобы в модели была ссылка на объект Person, вы можете использовать следующий метод:
@ModelAttribute("person")
public Person getPerson(){
return new Person();
}
Этот аннотированный метод позволит получить доступ к объекту Person в вашем представлении, поскольку он автоматически добавляется в модели Spring.
На Уровне
1 Метода. Когда аннотация используется на уровне метода, это указывает, что цель того метода состоит в том, чтобы добавить один или несколько образцовых атрибутов
@ModelAttribute
public void addAttributes(Model model) {
model.addAttribute("india", "india");
}
В Аргументе метода 1. При использовании в качестве аргумента метода он указывает, что аргумент должен быть получен из модели. Если не представьте, и должен быть сначала инстанцирован и затем добавлен к модели и однажды существующий в модели, поля аргументов должны быть заполнены от всех параметров запроса, которые имеют соответствие именам Так, это связывает данные формы с бобом.
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
public String submit(@ModelAttribute("employee") Employee employee) {
return "employeeView";
}