Вы довольно близки, но похоже, что вам не хватает функции setState
из реакции. Например.
handleCourseChange = (value) => {
this.selectCourseValue = value
console.log(this.selectCourseValue)
}
станет
handleCourseChange = (value) => {
this.setState({ selectCourseValue: value })
console.log(this.state.selectCourseValue)
}
Для получения дополнительной информации о setState
, посмотрите официальную документацию реагирования: https://reactjs.org/docs/react-component .html # SetState
I tried to look up "strict typing" and wasn't able to find a definitive definition for the term. Perhaps it refers to a strongly typed language?
Strong typing refers to a type system in which there are restrictions to the operation on which two variables of different types can be performed. For example, in a very strongly typed language, trying to add a string
and number
may lead to an error.
string s;
number n;
s + n; <-- Type error.
The error may occur at compile time for statically typed languages or at runtime for dynamically typed languages. It should be noted that static/dynamic and strong/weak may sound like similar concepts, they are quite different.
A less strongly typed language may allow casting of variables to allow operations between variables originating from different types:
s + (string)n; <-- Allowed, as (number) has been explicitly
casted to (string), so variable types match.
In a weakly typed language, variables of differing types may become automatically casted to compatible types.
s + n; <-- Allowed, where the language will cast
the (number) to (string)
Perhaps, the "strictly typed language" refers to a very strongly typed language in which there are more strict restrictions as to how operations can be performed on variables of different types.
Существуют различные мнения о сильных или слабых системах различного типа , но я обычно слышал, что «строго типизированный язык программирования» означает очень ] строго типизированный язык программирования . Это часто описывает статические системы типов, встречающиеся в нескольких функциональных языках.
Языки, в которых переменные должны объявляться как содержащие определенный тип данных.
Если объявления переменных выглядят следующим образом:
String myString = "Fred";
, то ваш язык строго типизирован, переменная «myString» явно объявляется содержащим только строковые данные.
Если следующее работает:
x = 10;
x = "Fred";
, то оно свободно напечатано (два разных типа данных в одной переменной и области действия).
языки, где '1' + 3
будет недопустимым, потому что это добавление строка в целое число.
Строго типизированные языки обеспечивают типизацию для всех взаимодействующих данных.
Например,
int i = 3
string s = "4"
С этого момента, когда вы используете i, вы можете взаимодействовать с ним только как целочисленный тип. , Это означает, что вы ограничены использованием с методами, которые работают с целыми числами.
Что касается строки s, вы можете взаимодействовать с ней только как строковый тип. Вы можете объединить его с другой строкой, распечатать и т. Д. Однако, даже если он содержит этот символ «4», вы не можете добавить к целому числу, не используя какую-либо функцию для преобразования строки в целочисленный тип.
В динамически типизированный язык, у вас гораздо больше гибкости:
i = 3
s = "4"
Типы выводятся; Это означает, что они определяются на основе данных, которые они установлены. i - это тип числа, а s - тип строки, основанный на том, как они были заданы. Однако, когда у вас есть I + S; используется вывод типа, и в зависимости от вашей среды вы можете получить результат i + s = 7; поскольку s была неявно преобразована в int средой программирования. Однако эта операция может также привести к строке «34», если среда выводит, что строка int + должна совпадать с операцией конкатенации и операцией сложения.
Эта гибкость сделала языки со свободной типизацией очень популярными. Тем не менее, потому что этот тип вывода иногда может привести к неожиданным результатам; они также могут привести к большему количеству ошибок в вашем коде, если вы не будете осторожны. В типизированном языке, если я выполняю i + s, компилятор заставляет меня сначала преобразовать s в int, поэтому я знаю, что, добавив i к s, я получу 7, потому что я был вынужден преобразовать s в явный int первый. На динамическом языке он пытается сделать это для вас неявно, но результаты могут быть не такими, как вы ожидали, поскольку все может быть в i или s; строка, число или даже объект. Вы не знаете, пока не запустите свой код и не увидите, что происходит.