mousemove
. Приложение работает, всё хорошо, но потом, по некоторой причине, происходит размонтирование и через некоторое время снова монтирование. В таком случае, если не удалить прослушку, будет уже 2 события, что и является утечкой памяти.const Button = ({ children, callback, ...props }) => {
return <MainButton {...props} onPress={callback}>{children}</MainButton>;
};
<>
{cart.map(item => (
<div className="catalog-mobile__counter" key={item.product._id}>
<button className="catalog-mobile__minus"></button>
<input type="text" defaultValue={item.quantity || ''} />
<button className="catalog-mobile__plus"></button>
</div>
))}
</>
const handle = el => {
setItems(items => items.map(item => item === el
? {
...item,
show: !item.show
}
: item
));
};
function Popup(props) {
- <img onClick={props.close} />
+ <img onClick={() => props.close('передали')} />
}
package.json
, или .eslintrc.json
(все варианты тут). Так же и с prettier. deleteItem = (id) => {
this.setState(({ toDoData }) => ({
toDoData: toDoData.filter(entry => entry.id !== id)
}));
}
useEffect
'ом отменяйте axios запрос.selectedPokemon
? const [selected, setSelected] = useState([]);
const toggleSelected = (option, checked) => {
if (multiSelection) {
setSelected(selected => checked
? [...selected, option.key]
: selected.filter(entry => entry !== option.key)
);
} else {
setSelected(checked
? [option.key]
: []
);
}
};
toggleSelected
не имело логики переключения, хотя по наименованию - должна была бы. То же самое было с setSelected
. Демка.const download = (name, blob) => {
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.setAttribute('href', url);
link.setAttribute('download', name);
link.addEventListener('click', () => {
setTimeout(() => {
URL.revokeObjectURL(url);
});
});
link.click();
};
case ADD_CATEGORY:
addCategory(
- state,
+ newState,
action.category
);
break;
let newState = { ...state };
. <form action="some_url" method="POST">
<input type="text" name="username">
<button>Submit</button>
</form>
const form = document.querySelector('form');
const users = ['John', 'Emily', 'Bruce', 'Alice'];
form.addEventListener('submit', event => {
const input = form.querySelector('input[type="username"]');
const index = users.indexOf(input.value);
if (index === -1) {
event.preventDefault();
} else {
input.value = index;
}
});