setState не рендерит лишний раз?

Используйте настраиваемое связующее устройство, подобное этому ... (работает против официального драйвера C # MongoDB)

protected void Application_Start()
{
    ...
    ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder()); 
}

public class ObjectIdModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (result == null)
        {
            return ObjectId.Empty;
        }
        return ObjectId.Parse((string)result.ConvertTo(typeof(string)));
    }
}
0
задан Isaac 18 January 2019 в 02:02
поделиться

2 ответа

Попробуйте вставить в код B состояние внутри метода constructor (), например, так:

constructor(){
    super();
    this.state = { dateString: moment() }
}

Я обычно не использую плавающее состояние в классе, я всегда помещаю его в конструктор .

0
ответ дан Mtg Kha Jeskai 18 January 2019 в 02:02
поделиться

Проверьте значение this.props.navigation.getParam('dateString', moment()) в render и componentDidmount().

Если оба значения одинаковы, это не вызовет повторную визуализацию, так как реагирует на повторную визуализацию компонентов, только если состояние изменилось, если вы сделали это PureComponent.

В этом jsfiddle вы можете попробовать запустить код, изменив Pure и normal component и увидеть разницу.

0
ответ дан Nithesh 18 January 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: