Я так понял, что useEffect не очень дружит с setState, потому вопрос - как стоит организовать цепочку [получение данных] -> [обработка данных] -> [setState]?
const [data, setData] = React.useState(null)
React.useEffect(() => {
const fetchedData = /* как-то данные получить */
setData(fetchedData)
}, [])
return data ? <p>{ JSON.stringify(data) } </p> : null
v = -v
0 === -0
// true
new Highlight({
selector: '.block__cell'
})
name: 'John', age: 21, name: 'Victor', age: 29, ...
data = "name: 'John', age: 21, name: 'Victor', age: 29, name: 'John2', age: 211, name: 'Victor2', age: 234"
arr = []
split = data.split(',')
for(let i = 0; i < split.length; i += 2) {
arr.push( [ split[i].split(':'), split[i + 1].split(':') ] )
}
arr.map(elem => Object.fromEntries(elem))
var speak = function () {
console.log(this.sound + "! Меня зовут " + this.name + "!")
}
var cat = {}
cat.sound = "Мяу"
cat.name = "Мурзик"
cat.age = 3
cat.speak()
// cat.speak и остается необъявленным undefined
.....
cat.speak = speak
cat.speak()
Object.prototype.speak = speak
dog = {sound: 'gav', name: 'Psina'}
dog.speak()
function hexToRgb(hex) {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, function(m, r, g, b) {
return r + r + g + g + b + b;
});
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result
? [ parseInt(result[1], 16),
parseInt(result[2], 16),
parseInt(result[3], 16) ]
: null;
}
const response = await fetch(url)
const data = await response.json()
.......
в отдельную переменную запределом Fetch
function onContextMenu(e) {
e.preventDefault();
elementOnClick = e.target;
if(elementOnClick.tagName.toLowerCase() === 'div') {
if(elementOnClick.classList.contains('folder')) {
elementOnClick.setAttribute('contenteditable', 'true');
var range = document.createRange();
var sel = window.getSelection();
const pos = elementOnClick.childNodes[0].textContent.length
range.setStart(elementOnClick.childNodes[0], pos);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
elementOnClick.focus();
console.log('Elem FOLDER');
} else if(elementOnClick.classList.contains('file')) {
elementOnClick.setAttribute('contenteditable', 'true');
var range = document.createRange();
var sel = window.getSelection();
const pos = elementOnClick.childNodes[0].textContent.lastIndexOf('.')
range.setStart(elementOnClick.childNodes[0], pos);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
elementOnClick.focus();
console.log('Elem FILE');
}
} else {
console.log('EMPTY');
}
document.addEventListener('click', onMouseClick, false);
}
num = Number(copyString.match(/\((.*)\)/)[1] || undefined)
if(!isNaN(num)) { console.log('это число!') }
copyString = 'print ("hello world"); //строка'
// undefined
copyString = 'print (56); '
// это число!