Какие типы для использования в MST для Animated.Value, setInterval, требуются ('image.png')? - PullRequest
0 голосов
/ 08 ноября 2019

Я использую реагировать нативно с MST и не могу решить следующий вопрос Какие типы для использования в MST для new Animated.Value(1), setInterval, требуют ('image.png')? Пробовал string, frozen, что не помогло.

import {Animated} from 'react-native';
import {types} from 'mobx-state-tree';

const Worksheet = types
  .model('Worksheet', {
    image: _,
    animated: _,
    timeInterval: _, 
  })

Worksheet.create({
  image: require('image.png'),
  animated: new Animated.Value(1),
  timeInterval: null | setInterval(() => {}, 1000),  
})

Нужна ваша помощь. Спасибо!

1 Ответ

2 голосов
/ 09 ноября 2019

Один из вариантов может быть:

const Worksheet = types
  .model('Worksheet', {
    imageFile: types.string,
    animatedValue: 1,
  ).views(self => ({
    get image() {
      return require(self.imageFile);
    },
    get animated() {
      return new Animated.Value(self.animatedValue);
    },
  }).volatile({
    timeInterval: null || setInterval(() => {}, 1000)
  })

Не все поля могут быть типами, если MST не может рассуждать о них. Вот где volatile вступает в игру. Обратите внимание, что поля внутри volatile не могут быть сериализованы в снимки.

Я не уверен, какое у вас было намерение с animated, поэтому я поместил значение в качестве его собственного типа и использовал вычисляемый метод получения в views чтобы получить то, что вы хотите. Возможно, это вызывает у вас идеи.

...