const singers = [
{ name: 'Steven Tyler', band: 'Aerosmith', born: 1948 },
{ name: 'Karen Carpenter', band: 'The Carpenters', born: 1950 },
{ name: 'Kurt Cobain', band: 'Nirvana', born: 1967 },
{ name: 'Stevie Nicks', band: 'Fleetwood Mac', born: 1948 },
];
function compareValues(key, order = 'asc') {
return function innerSort(a, b) {
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
// property doesn't exist on either object
return 0;
}
const varA = (typeof a[key] === 'string')
? a[key].toUpperCase() : a[key];
const varB = (typeof b[key] === 'string')
? b[key].toUpperCase() : b[key];
let comparison = 0;
if (varA > varB) {
comparison = 1;
} else if (varA < varB) {
comparison = -1;
}
return (
(order === 'desc') ? (comparison * -1) : comparison
);
};
}
// array is sorted by band, in ascending order by default
singers.sort(compareValues('band'));
// array is sorted by band in descending order
singers.sort(compareValues('band', 'desc'));
let [slidesCount, setSlidesCount] = useState(0);
useEffect(() => {
setSlidesCount(document.querySelectorAll('.slick-list .slick-slide:not(.slick-cloned)').length)
console.log(slidesCount) //Сначала выводит 0, потом 4
}, [slidesCount]);
componentDidMount() {
window.addEventListener('mousemove', () => {})
}
componentWillUnmount() {
window.removeEventListener('mousemove', () => {})
}
useEffect(() => {
window.addEventListener('mousemove', () => {});
// returned function will be called on component unmount
return () => {
window.removeEventListener('mousemove', () => {})
}
}, [])
или заставить монтироваться компонент уже с готовым id или же ловить его в componentWillReceiveProps
componentWillReceiveProps(nextProps) {
if(nextProps.fetchedUser.id&&this.props.fetchedUser.id!==nextProps.fetchedUser.id){
fetch(`${url}/user_info?user_id=${this.props.fetchedUser.id}`)
.then(res => { this.user = res.json() })
.then(
(result) => {
this.setState({
loaded: true,
});
},
(error) => {
this.setState({
loaded: true,
error
});
}
)
}
}
import React, { Component } from 'react';
import { WebView } from 'react-native-webview';
class MyInlineWeb extends Component {
render() {
return (
<WebView
originWhitelist={['*']}
source={{ html: '<h1>Hello world</h1>' }}
/>
);
}
}