Что вам нужно, так это componentDidUpdate
в компоненте SearchBar
:
componentDidUpdate(prevProps) {
if (this.props.data !== prevProps.data) {
this.setState({data: this.props.data ,filteredData: this.props.data});
}
}
Лучшее решение - не хранить data
как состояние в SearchBar
, а получить доступ к нему напрямую из реквизита.
"Надлежащий" способ добраться до той информации состоит в том, чтобы использовать:: MsiGetProductInfo (). PInvoke должен быть тривиальным.
Спасибо Грабит! Я добавил полный пример C# ниже.
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);
static void Main(string[] args)
{
Int32 len = 512;
var builder = new StringBuilder(len);
MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len);
var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);
Console.WriteLine(installDate);
}
Я не знаю ни о каком API, который сделает это, но Вы могли попытаться считать значение из Реестра непосредственно. Проверьте следующий ключ:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
InstallDate = 20081004
Информация, хранившая под ключом Удаления, отображена, например, в Панели управления-> Добавляют или Удаляют Программы.