Я изучаю React. У меня есть небольшая функция в ваниле JS, которая случайным образом генерирует данное изображение. Поскольку это случайное и не сохраняется в каком-либо состоянии (намеренно), каждое изменение состояния также меняет образ, чего я пытаюсь избежать. Изображение будет использоваться как встроенный стиль на <body>
, поэтому его можно использовать как фоновое изображение.Прикрепляющая функция, которая будет использоваться как встроенный стиль для компонентаWillMount
Если я установил эту функцию myBackground
на componentWillMount
, которая отображается только один раз прямо перед установкой компонента, то я могу выполнить то, что мне нужно, но я не знаю, что, как ожидается, будет там.
class homePage extends React.Component {
constructor() {
super()
this.state = {}
}
get myBackground() {
const imageArr = ['cat.jpg', 'dog.jpg', 'horse.jpg']
const randomImg = imageArr[Math.floor(Math.random() * imageArr.length)]
const bgImg = {backgroundImage: 'url(' + randomImg + ')'}
return bgImg
}
componentWillMount() {
this.myBackground // doesn't work
}
render() {
// with the current status, below image is changed
// whenever a given state is changed. It needs to be changed
// only right before component is mounted
return <body style={this.myBackground}>
...
}
}
Как я могу иметь this.myBackground
прикреплены к componentWillMount и все же быть в состоянии использовать его в визуализации? Обратите внимание, что создание setState
для обработки этого поведения не ожидается.
'this.myBackground // не work' <- то, что делает это значит? – zerkms
подождите, что вы ожидаете от 'this.myBackground'? – Li357
«не работает» означает, что каждый раз, когда происходит изменение состояния, изображение рандомизируется снова, но оно должно быть случайным только до того, как компонент установлен –