В следующем коде:
class App extends React.Component {
state = { val: '' };
handleChangeEvent = (e) => {
this.setState({ val: e.target.value });
}
OddEven(num) {
const number = parseInt(num);
let description;
if (Number.isInteger(number)) {
if (number % 2 == 0) {
description = <strong>even</strong>;
} else {
description = <i>odd</i>;
}
alert(number);
return (
<h1>
Test
</h1>
);
} else {
return null;
}
}
render() {
return (
<div>
<input type='text' onChange = {this.handleChangeEvent} />
<button onClick = {() =>this.OddEven(this.state.val) }>
Odd Even
</button>
</div>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
OddEven() не возвращает div. Не могу понять почему последние 2 часа. Я нахожусь в стадии обучения. Так что не обижайтесь, если это глупо.
@scunliffe Вам не нужно определять его как функцию внутри класса реакции
Вызывается ли ваш alert ()? например если вы не измените значение по умолчанию "" (пустая строка), ... эта строка вернет false: Number.isInteger("")
Для того, что вы используете 'description', вы настраиваете его, но никогда не используете, также 'OddEven' возвращает элемент null или <h1>, в этой функции нет div.
ООООП извините, ребята, моя ОШИБКА. Первоначально OddEven был написан как функция вне класса, например, function OddEven (), и функция должна вызываться из кнопки onclick () вместе с состоянием. "описание" должно быть возвращено. Очень жаль.





если вы хотите вернуть свое описание, вот как это сделать:
class App extends React.Component {
state = {
val: '',
description: null,
};
handleChangeEvent = (e) => {
this.setState({ val: e.target.value });
}
OddEven(num) {
const number = parseInt(num);
let {description} = this.state;
if (Number.isInteger(number)) {
if (number % 2 == 0) {
description = <strong>even</strong>;
} else {
description = <i>odd</i>;
}
this.setState({description: description});
} else {
this.setState({description: null});
}
}
render() {
return (
<div>
<input type='text' onChange = {this.handleChangeEvent} />
<button onClick = {() =>this.OddEven(this.state.val) }>
Odd Even Check?
</button>
{this.state.description}
</div>
);
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
ООООП извините, ребята, моя ОШИБКА. Первоначально OddEven был написан как функция вне класса, например, function OddEven (), и функция должна вызываться из кнопки onclick () вместе с состоянием. "описание" должно быть возвращено. Очень жаль.
Это потому, что вы нигде не визуализируете то, что возвращает ваша функция, вы бы предпочли сделать следующее:
class App extends React.Component {
state = { val: "", oddeven: "" }
handleChangeEvent = e => {
this.setState({ val: e.target.value })
}
OddEven = () => {
const number = parseInt(this.state.val) //Use the state directly
let description
if (Number.isInteger(number)) {
if (number % 2 == 0) {
description = <strong>even</strong>
} else {
description = <i>odd</i>
}
alert(number)
this.setState({ oddEven: "Hello" })
} else {
return null
}
}
render() {
return (
<div>
<input type = "text" onChange = {this.handleChangeEvent} />
<button onClick = {this.OddEven}>Odd Even</button> {/* you do not need to passs the state here, you can directly access it in your function */}
{this.state.oddEven && <h1>{this.state.oddEven}</h1>} {/* Here we check if oddEven exists and then we display whatever we set in the OddEven function}
</div>
)
}
}
Здесь мы устанавливаем состояние, которое вы хотите визуализировать, а затем используем его внутри нашей функции визуализации.
ООООП извините, ребята, моя ОШИБКА. Первоначально OddEven был написан как функция вне класса, например, function OddEven (), и функция должна вызываться из кнопки onclick () вместе с состоянием. "описание" должно быть возвращено. Очень жаль.
Попробуй это :
class App extends React.Component {
state = { val: '' };
handleChangeEvent = (e) => {
this.setState({ val: e.target.value });
}
OddEven(num) {
const number = parseInt(num);
if (Number.isInteger(number)) {
if (number % 2 == 0) {
return <strong>even</strong>;
} else {
return <i>odd</i>;
}
} else {
return <a>Please Enter A Number</a>;
}
}
render() {
return (
<div>
<input type='text' onChange = {this.handleChangeEvent} />
{OddEven(this.state.val)}
</div>
);
}
ООООП извините, ребята, моя ОШИБКА. Первоначально OddEven был написан как функция вне класса, например, function OddEven (), и функция должна вызываться из кнопки onclick () вместе с состоянием. "описание" должно быть возвращено. Очень жаль.
Что вы имеете в виду, говоря, что не возвращает div ??