Заменить
<h2 key={movie.toString()}>{movie.title}</h2>
на
<h2 key={movie.id}>{movie.title}</h2>
Объяснение:
React ожидает уникальный ключ для каждой строки в виде списка составная часть. Он использует этот ключ, чтобы определить, что изменилось с момента последнего рендеринга. В противном случае это может быть неоднозначным, как список изменился.
movie.toString()
не был уникальным. Он был оценен в "[object Object]"
для каждой строки.
Глядя на API, который вы вызываете, вам, возможно, придется сделать что-то более похожее на это:
<h2 key={movie.event.id}>{movie.event.title}</h2>
Очистка списка на месте повлияет на все другие ссылки в том же списке.
Например, этот метод не влияет на другие ссылки:
>>> a = [1, 2, 3]
>>> b = a
>>> a = []
>>> print(a)
[]
>>> print(b)
[1, 2, 3]
Но этот:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:] # equivalent to del a[0:len(a)]
>>> print(a)
[]
>>> print(b)
[]
>>> a is b
True
] Вы также можете сделать:
>>> a[:] = []
Мне кажется, что del вернет вам память, тогда как назначение нового списка приведет к удалению старого только при запуске gc. имеет значение.
Это может быть полезно для больших списков, но для небольшого списка им следует пренебречь.
Править : Как Алгориас, это не имеет значения.
Обратите внимание, что
del old_list[ 0:len(old_list) ]
эквивалентно
del old_list[:]
Есть два случая, в которых вы можете захотеть очистить список:
old_list
далее в своем коде; В случае 1 вы просто продолжаете выполнять задание:
old_list = [] # or whatever you want it to be equal to
В случае 2 оператор del
уменьшит счетчик ссылок на объект списка с именем старый список
указывает на. Если на объект списка указывает только имя old_list
at, счетчик ссылок будет равен 0, и объект будет освобожден для сборки мусора.
del old_list