Как создать объект THREE.PerspectiveCamera внутри setState в Reaction.js - PullRequest
0 голосов
/ 24 января 2019

Я использую three.js и Reaction.js. Прямо сейчас я создаю THREE.PerspectiveCamera объект подобным образом.

init = () => {
    this.state.camera = new THREE.PerspectiveCamera(25, window.innerWidth / window.innerHeight, 1, 10000);
// others code
}

Работает нормально, но предупреждает об этом

Do not mutate state directly. Use setState()

Теперь, если я попытался сделать это

this.setState({camera: new THREE.PerspectiveCamera(25, window.innerWidth / window.innerHeight, 1, 10000)})

выдает ошибку и не может создать THREE.PerspectiveCamera объект. Это ошибка ниже

ошибка

Cannot read property 'set' of undefined

строка ошибки

this.state.camera.position.set(100, 0, 1000)

это мой штат

this.state = {
    a: '',
    b: false,
    camera: {},
}

Так может ли кто-нибудь помочь мне, как создать THREE.PerspectiveCamera объект внутри setState ?

1 Ответ

0 голосов
/ 25 января 2019

Я рекомендую вам держать камеру вне this.state, потому что, когда вы анимируете ее со скоростью 60 кадров в секунду, React попытается отследить все эти изменения состояния и вызвать слишком большие накладные расходы.

Чтобы упростить вещи, вы должны сделать this.camera = new THREE.PerspectiveCamera(), затем вы можете изменить его по своему желанию с помощью this.camera.position.set(x, y, z) и не допускать отслеживания состояния React из уравнения.

...