1. когда уместно использовать данный язык?
2. Можно ли использовать TS без фреймов и библиотек?
3. И есть ли смысл его использовать без фреймворков?
limit - The maximum number of items to return
offset - The index of the first item to return
const sortOptions = [
{ key: '...', type: '...' },
{ key: '...', type: '...' },
...
];
const sortFunctions = {
type1: (a, b) => ...,
type2: (a, b) => ...,
...
};
const [ sortIndex, setSortIndex ] = useState(0);
const onSortChange = e => setSortIndex(+e.target.value);
<select value={sortIndex} onChange={onSortChange}>
{sortOptions.map((n, i) => <option value={i}>{n.key}</option>)}
</select>
const sortedItems = useMemo(() => {
const { key, type } = sortOptions[sortIndex];
const f = sortFunctions[type];
return [...items].sort((a, b) => f(a[key], b[key]));
}, [ items, sortIndex, sortFunctions ]);
карточка и модалка, это как один компонент
вдруг у меня будет таких карточек не 6 а 106
function Portfolio() {
const [ modalData, setModalData ] = useState(null);
const onClick = (e) => setModalData(cardsData[e.target.dataset.index]);
const onClose = () => setModalData(null);
return (
<div>
{cardsData.map((n, i) => (
<button data-index={i} onClick={onClick}>
open modal #{i + 1}
</button>
))}
<Modal isOpen={!!modalData} onRequestClose={onClose}>
{modalData && (
<>
<h2>{modalData.title}</h2>
<button onClick={onClose}>close</button>
<div>{modalData.things}</div>
</>
)}
</Modal>
</div>
);
}
input.value += btn.value;
document.querySelector('input').value= '' ;
<form>
неспроста. Он принимает в себе путь к файлу который обрабатывает форму. Например сделаем send.php. Далее в этот send.php мы PHP кодом делаем обработку входных параметров с формы, и делаем то что там нужно (отправляем на почту).localStorage.setItem('store', ([]).toString() ); // создаем пустой массив и тут же преобразуем его в String
const store = Array.from(localStorage.getItem('store')) // получаем Store из localStorage и преобразуем его в массив
// та же техника
const store = Array.from(localStorage.getItem('store')) // получаем Store
store.push({todoName: 'habr help', isComplete: false}) // заполняем новыми данными
localStorage.setItem('store', (store).toString() ); // выполняем сохранение в localStorage
// можно сделать через фильтр
const store = Array.from(localStorage.getItem('store')) // получаем Store
store.filter(item => item.todoName !== 'habr help');
localStorage.setItem('store', (store).toString() ); // выполняем сохранение в localStorage
localStorage.removeItem('store'); // - удаляет только сам <b>store</b> из localStorage
localStorage.clear(); // - удаляет все элементы из localStorage (опасно, если приложение построено с localStorage )