class Child extends Component {
componentDidMount() {
this.props.callback();
}
render() {
return (
<div>Child</div>
);
}
}
class Parent extends Component {
onChildDidMount = () => {
console.log('Child component was mounted!');
// do something else
};
render() {
return(
<Wrapper>
<Child callback={this.onChildDidMount} />
</Wrapper>
);
}
}
render() {
const isUserInfoFormActive = ...; // your conditions
const isUserAddressFormActive = ...; // your conditions
return (
<Wrapper>
{isUserInfoFormActive && <UserInfoForm />}
{isUserAddressFormActive && <UserAddressForm />}
</Wrapper>
);
}
class FormWidget extends Component {
...
getContent() {
const { children, activeStep } = this.props;
return React.Children.map(children, (child, i) => {
if (activeStep === i + 1) {
return React.cloneElement(child, { key: i });
}
return null;
});
}
handleNext = () => {
...
};
handlePrev = () => {
...
};
render() {
...
return(
<div>
<Content>{this.getContent()}</Content>
<div>
<Button onClick={this.handlePrev}>{prevButtonLabel}</Button>
<Button onClick={this.handleNext}>{nextButtonLabel}</Button>
</div>
</div>
);
}
}
render() {
return (
<FormWidget>
<Step1 />
<Step2 />
<Step3 />
<Step4 />
<Step5 />
<Step6 />
<Step7 />
<Step8 />
<Step9 />
<Step10 />
</FormWidget>
);
}
function foo(x) { return x + 1 }
foo(2)
function foo(x) { return x + 1 }
undefined // объявление функции ничего не возвращает, хотя Function Declaration еще как!
// консоль же интерпретирует это выражение как Function Expression
foo(2)
3 // вызов a возвращает значение 3
(function bar(x) { return x * x }) // объявление функции, обернутое в скобки,
(function bar(x) { return x * x }) // интерпретируется как Function Declaration
(x) => x + 1
(x) => x + 1 // объявление arrow function возвращает саму функцию
this.state.title.map((item, i) => (
<TodoList
key={i}
index={i}
deleteItem={descriptionArr[i]}
title={titleArr[i]}
deleteItem={this.deleteItem}
/>
))
[
{
title: 'title',
description: 'description',
},
{
title: 'title',
description: 'description',
},
{
title: 'title',
description: 'description',
}
]
Иногда на функции checkResult скрипт не может получить ответ от сайта и он выполняет третье условие и перезапускает функцию checkResult снова.
console.log(last_read);
console.log(getRead());
console.log(last_read < getread());
console.log(last_read > getread());
function checkResult(last_read) {
setTimeout(function() {
if (last_read < getread()) {
} else if (last_read > getread()) {
} else {
checkResult(last_read);
}
checkResult(getRead());
}, 500);
}
var data = this.props.data
class Example extends React.Component {
render() {
return <span>{this.props.someValue}</span>;
}
}
function Example (props) {
return <span>props.someValue</span>;
}
#root
= javascript_pack_tag 'SearchUsers', {data: @users.to_json(only: [:id, :name, :email]) }
import React, {Component} from 'react';
import PropTypes from "prop-types";
import ReactDOM from 'react-dom';
let data = []; // задаем значение по-умолчанию
try {
data = JSON.parse(document.querySelector('script[data]').getAttribute('data'));
} catch(e) {
console.log(e); // тут можно обработать ошибку парсинга данных
}
const User = ({ name, email }) => (
<section id={name}>
<h1> {name} </h1>
<h2> {email} </h2>
</section>
);
const Users = ({ user }) => (
<div className="users">
{user.map(user =>
<User key={user.id} {...user} /> // обратите внимание, заменено значение свойства key
)}
</div>
);
ReactDOM.render(
<Users user={data} />,
document.getElementById('root')
);
function foo = function() {
}
foo.bar = 'bar';
$('#search').on('input', _.throttle(function(e) {
var searchKeyword = $(this).val();
...
}, 1000));