npm install
, а для этого нужно установить сначала Node.jsnpm run start
) и соответственно запустить их в каждой из папок (клиент, сервер). (Хотя возможно настроено на запуск единой командой) <select name="nm" id="nam">
<option value="QBC">QBC</option>
<option value="QEF">QEF</option>
<option value="GHI" selected>GHI</option> <!-- этот вариант будет выбран-->
<option value="KLM">KLM</option>
</select>
import React, { useState, useEffect } from 'react'
const LocalStorage = () => {
const date = [
{ symbol: 'RU', label: 'рубль' },
{ symbol: 'USD', label: 'доллар' },
{ symbol: 'EUR', label: 'евро' }
]
const [curr, setCurrencies] = useState(date)
const [currentSymbol, setCurrentSymbol] = useState("EUR") // опция выбранная по умолчанию (если нет данных в localstorage)
// срабатывает один раз при загрузке компонента
useEffect(() => {
if(localStorage.getItem('symbol')) {
const item = localStorage.getItem('symbol')
setCurrentSymbol(item)
}
}, [])
// обработчик - срабатывает при выборе опции списка
const selectHandler = (e) => {
localStorage.setItem('symbol', e.target.value)
setCurrentSymbol(e.target.value)
}
return (
<div>
<select onChange={selectHandler} value={currentSymbol}>
{
curr.map(currencies => (
<option key={currencies.symbol} value={currencies.symbol}>
{currencies.symbol} {currencies.label}
</option>
)
)
}
</select>
</div>
)
}
export default LocalStorage
import React, { Component } from 'react'
class ClassLocal extends Component {
constructor(props){
super(props);
this.state = {
curr: [
{ symbol: "RU", label: "рубль" },
{ symbol: "USD", label: "доллар" },
{ symbol: "EUR", label: "евро" }
],
currentSymbol: "EUR"
}
}
componentDidMount() {
if(localStorage.getItem('symbol')) {
const item = localStorage.getItem('symbol');
this.setState({currentSymbol: item})
}
}
selectHandler = (e) => {
localStorage.setItem('symbol', e.target.value)
this.setState({currentSymbol: e.target.value})
}
render() {
return (
<div>
<select onChange={this.selectHandler} value={this.state.currentSymbol}>
{
this.state.curr.map(currencies => (
<option key={currencies.symbol} value={currencies.symbol}>
{currencies.symbol} {currencies.label}
</option>
)
)
}
</select>
</div>
)
}
}
export default ClassLocal
function preparedData<T extends Record<string, {name: string, id: string}[]>>(data: T) {
return Object.keys(data).map((key) => {
return data[key as keyof T].map((a) => ({
val: a.name,
newId: a.id,
}));
});
}
function rgbaToAndroid1(rgba) {
const c = new Uint8Array([
rgba[2],
rgba[1],
rgba[0],
Math.round(rgba[3] * 255)
]);
return new Uint32Array(c.buffer)[0];
}
// либо
function rgbaToAndroid2(rgba) {
let color = 0;
for (let i = 0; i < 3; i++) {
color += rgba[i] * 2 ** ((2 - i) * 8);
}
color += Math.round(rgba[3] * 255) * 2 ** (3 * 8);
return color;
}
console.log(rgbaToAndroid1([255, 122, 107, 1]));
console.log(rgbaToAndroid2([255, 122, 107, 1]));
localStorage.setItem( 'name', value ); // пишите что хотите
localStorage.getItem( 'name' ); // читайте
localStorage.setItem( 'name', JSON.stringify( object )); // пишите в т.ч. объект
let object = JSON.parse( localStorage.getItem( 'name' ) ); // читайте в т.ч. объект
$('a1').on('click', product);
range.setAttribute('max', video.duration);
video.onloadeddata = () => range.setAttribute('max', video.duration);
git rm --cached [filename]
git commit --amend
let checked = null;
$('input').click(function() {
checked = checked === this.value ? null : this.value;
this.checked = !!checked;
});
// или
document.querySelectorAll('input').forEach(function(n) {
n.addEventListener('click', this);
}, function({ target: t }) {
t.checked = !!(this[0] = this[0] === t ? null : t);
}.bind([]));
const $checkboxes = $('input').change(function() {
if (this.checked) {
$checkboxes.not(this).prop('checked', false);
}
});
// или
const checkboxes = document.querySelectorAll('input');
const onChange = e => checkboxes.forEach(n => n.checked &&= n === e.target);
checkboxes.forEach(n => n.addEventListener('change', onChange));
.filter
должен возвращать булево значение. TRUE - оставить элемент, FALSE - удалитьfunction Validation(arr) {
return arr.filter((el) => {
return typeof el.age === "number"
&& el.full_name !== undefined
&& el.full_name.charAt(0) === el.full_name.charAt(0).toUpperCase()
&& el.gender !== undefined
&& el.gender.charAt(0) === el.gender.charAt(0).toUpperCase()
&& el.note !== undefined
&& el.note.charAt(0) === el.note.charAt(0).toUpperCase()
&& el.state !== undefined
&& el.state.charAt(0) === el.state.charAt(0).toUpperCase()
&& el.city !== undefined
&& el.city.charAt(0) === el.city.charAt(0).toUpperCase()
&& el.country !== undefined
&& el.country.charAt(0) === el.country.charAt(0).toUpperCase()
}
function firstLetterIsUpper(str) {
return typeof(str) === 'string'
&& str.length
&& str.charAt(0) === str.charAt(0).toUpperCase()
}
function Validation(arr) {
return arr.filter((el) => {
return typeof el.age === "number"
&& firstLetterIsUpper(el?.full_name)
&& firstLetterIsUpper(el?.gender)
&& firstLetterIsUpper(el?.note)
&& firstLetterIsUpper(el?.state)
&& firstLetterIsUpper(el?.city)
&& firstLetterIsUpper(el?.country)
}
outline: none;
<div class="btn-group" role="group" aria-label="Basic radio toggle button group">
<input type="radio" class="btn-check" name="btnradio" id="btnradio1" autocomplete="off" checked>
<label class="btn btn-outline-primary shadow-none" for="btnradio1">Radio 1</label>
<input type="radio" class="btn-check" name="btnradio" id="btnradio2" autocomplete="off">
<label class="btn btn-outline-primary shadow-none" for="btnradio2">Radio 2</label>
<input type="radio" class="btn-check" name="btnradio" id="btnradio3" autocomplete="off">
<label class="btn btn-outline-primary shadow-none" for="btnradio3">Radio 3</label>
</div>