私はリアクションを学んでいます。私はランダムに特定の画像を生成するバニラJSの小さな機能を持っています。無作為で、任意の状態(故意に)に保存されていないので、各状態の変化も同様に画像を変更します。これは私が避けようとしているものです。イメージは<body>
のインラインスタイルとして使用されるので、私の背景イメージとして使用できます。componentWillMountにインラインスタイルとして使用する関数をアタッチする
myBackground
の機能をcomponentWillMount
に設定すると、コンポーネントがマウントされる直前にレンダリングされますが、私は必要なものを達成することができますが、何がそこにあるかはわかりません。私はthis.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}>
...
}
}
?この動作を処理するにはsetState
を作成する必要はありません。
'this.myBackground //は
zerkms
待って、 'this.myBackground'は何をすると思いますか? – Li357
"動作しません"とは、状態が変わるたびにイメージがランダム化されることを意味しますが、コンポーネントがマウントされる前にランダムになるようにしてください。 –