Используйте настраиваемое связующее устройство, подобное этому ... (работает против официального драйвера 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)));
}
}
Попробуйте вставить в код B состояние внутри метода constructor (), например, так:
constructor(){
super();
this.state = { dateString: moment() }
}
Я обычно не использую плавающее состояние в классе, я всегда помещаю его в конструктор .
Проверьте значение this.props.navigation.getParam('dateString', moment())
в render
и componentDidmount()
.
Если оба значения одинаковы, это не вызовет повторную визуализацию, так как реагирует на повторную визуализацию компонентов, только если состояние изменилось, если вы сделали это PureComponent
.
В этом jsfiddle вы можете попробовать запустить код, изменив Pure и normal component и увидеть разницу.