小编Ank*_*kit的帖子

将Proptypes.shape传递给Proptypes.arrayOf做出反应

我在单独的文件中创建了两个模型State和City.在该州进口城市.

州内可以有一系列城市.

以下代码工作正常.

State.js

let State = PropTypes.shape({
    name: React.PropTypes.string,
    cities: PropTypes.arrayOf(PropTypes.shape(City))
}); 
Run Code Online (Sandbox Code Playgroud)

City.js

let City = PropTypes.shape({
    name: React.PropTypes.string,
    population: PropTypes.number
}); 
Run Code Online (Sandbox Code Playgroud)

但是,当我重写citiesas时

let State = PropTypes.shape({
    name: React.PropTypes.string,
    cities: PropTypes.arrayOf(City)
}); 
Run Code Online (Sandbox Code Playgroud)

它给了我警告.

摘要:

cities: PropTypes.arrayOf(PropTypes.shape(City)) 作品.

cities: PropTypes.arrayOf(City) 没有.

它给了我以下警告:

Warning: Failed propType: Property xx of component Xx has invalid PropType notation inside arrayOf. Check the render method of Yy.

我的问题是,CityProptypes.shape,为什么我需要再提Proptypes.shape(City)一次Proptypes.arrayOf

reactjs react-proptypes

15
推荐指数
1
解决办法
7189
查看次数

如何在 nix 包中指定主机和构建平台(在 Nix 中进行交叉编译)

我是 Nix 的新手,正在努力掌握 Nix 的交叉编译概念。据我了解,可以访问 Nix 包中的 stdenv.hostPlatform 和 buildPlatform 属性,并相应地选择库和工具。

但是我对两件事感到困惑:

  • 我正在创建一个 nix 包 -> 如何指定该包的主机平台和构建平台?默认情况下,Nix 选择用户构建的系统作为“构建”平台,“主机”平台默认为“构建”,“目标”平台默认为“主机”。然而,作为包创建者,我如何向 Nix 告知构建和主机平台。
  • 如何提供一个 Nix 不知道的构建和托管平台?是否可以在我的 Nix 包中定义我自己的自定义平台?

我阅读了 nix 文档(https://nixos.org/manual/nixpkgs/stable/#chap-cross),但是无法回答上述两个问题。

任何帮助或指示将不胜感激。

我做了一些尝试:

我原来的代码

{cmake, stdenv, gcc, coreutils, bar, git, doxygen, lib}:

stdenv.mkDerivation rec {

  pname = "foo";
  
  version = "1.0";

  src = ./foo;

  buildInputs = [ bar ];

  nativeBuildInputs = [ cmake doxygen ];

  strictDeps = true;

  configurePhase = ''
    cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=$src/tools/toolchains/mytoolchain.cmake .
  '';

  installPhase = '' …
Run Code Online (Sandbox Code Playgroud)

cross-compiling nix

5
推荐指数
1
解决办法
1324
查看次数

在Primefaces选项列表中,如何找到项目从TARGET移动到SOURCE,使用Omnifaces转换器

我环顾四周,无法找到解决方案.

我正在使用Omnifaces listConverterPickList组件Primefaces.当我将物品从SOURCE移动到TARGET时.在支持bean中,我只获得新项目dualList.getTarget().

但是当我将物品从TARGET移动到SOURCE时.在支持bean中,我无法检查是否已从TARGET中删除了某个项目.

我试过dualList.getSource()- SOURCE不包含从TARGET中删除的项目. 当然,dualList.getTarget()将为空(假设没有项目从SOURCE移动到TARGET).

我的问题是如何才能在支持bean中发现某些内容已从TARGET转移到SOURCE

以前我已经创建了一个自定义转换器,在那里,我dualList.getTarget()给了我更新的目标(即旧值+添加的新值+删除旧值).因此,我可以弄清楚哪些值被添加,删除并仍然存在.

但在使用Omnifaces listConverter时我并不了解如何实现它.

我的代码看起来像这样:

XHTML

<p:pickList id="pickList" value="#{assignBenchmarkersBean.dualUserList}" 
            var="users" itemLabel="#{users.username}" itemValue="#{users}" >
    <o:converter converterId="omnifaces.ListConverter" 
                 list="#{assignBenchmarkersBean.dualUserList.source}" />
</p:pickList>

<p:commandButton id="update" value="#{bundle.create}" 
                 styleClass="redButton bigFont" 
                 actionListener="#{assignBenchmarkersBean.update()}" />
Run Code Online (Sandbox Code Playgroud)

public void update(){
        try{
            prepareRemoveOldAndAddNewUsersList();
           /**some other code **/
        }catch(Exception e){
            FacesMsg.error(ErrorMessage.UPDATE.getValue(), e);
        } …
Run Code Online (Sandbox Code Playgroud)

jsf primefaces jsf-2 omnifaces

1
推荐指数
1
解决办法
3975
查看次数