小编Mic*_*per的帖子

在不添加嵌套的情况下组合redux reducer

我有一个场景,我有2个减速器是a的结果combineReducers.我想将它们组合在一起,但在嵌套时将它们的键保持在同一级别.

例如,给出以下减速器

const reducerA = combineReducers({ reducerA1, reducerA2 })
const reducerB = combineReducers{{ reducerB1, reducerB2 })
Run Code Online (Sandbox Code Playgroud)

我想最终得到一个像这样的结构:

{
    reducerA1: ...,
    reducerA2: ...,
    reducerB1: ...,
    reducerB2: ...
}
Run Code Online (Sandbox Code Playgroud)

如果我combineReducers再次使用reducerA并且reducerB喜欢这样:

const reducer = combineReducers({ reducerA, reducersB })
Run Code Online (Sandbox Code Playgroud)

我最终得到了一个结构:

{
    reducerA: {
        reducerA1: ...,
        reducerA2: ...
    },
    reducerB: {
        reducerB1: ...,
        reducerB2: ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能结合reducerA1,reducerA2,reducerB1reducerB2在一个单一的combineReducers呼叫为reducerAreducerB被提供给我已经从不同的NPM包相结合.

我已经尝试使用reduce-reducers库将它们组合在一起并将状态缩小在一起,这是我从查看redux文档得到的一个想法,如下所示: …

javascript redux

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

隐藏JTable中的列

可能重复:
如何在JTable中创建一个不可见的Swing Java
列如何隐藏DefaultTableModel中的一个特殊列,使其不在表中显示?

我试图在JTable中输入数据到三列,但我想只显示两列.实际上,我想隐藏第三列,而不是通过将宽度设置为0,而是通过任何其他方法可以在click事件中从隐藏列获取数据.

如何以这种方式隐藏列?

我使用以下代码:

 try {
     String Title[]= new String{"a","b","c"};
     Object obj= new Object[50][3];
     JTable table= new JTable(obj,title);
     JScrollPane jsp= new JScrollPane(table); 
     add(jsp);
 } catch(Exception ex) {
     ex.printStackTrace();
 }
Run Code Online (Sandbox Code Playgroud)

java swing jtable jscrollpane

8
推荐指数
1
解决办法
3万
查看次数

如何在笑话和酶中为 useState Hook 设置初始状态值?

我知道这里已经有人问过这个问题:How to set initial state for useState Hook in jest andase?

const [state, setState] = useState([]);
Run Code Online (Sandbox Code Playgroud)

我完全同意Jimmy's Answer从测试文件中模拟 useState 函数,但我有这个问题的一些扩展版本,“如果我有多个 useState 语句进入钩子,我如何测试它们并为它们分配相应的自定义值?”

我有一些带有钩子状态值条件的 JSX 渲染,并且取决于JSX正在渲染的该状态的值。

如何通过将这些 JSX 放入wrapper我的测试用例代码中来测试它们?

javascript reactjs enzyme react-hooks

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

Redux - 条件调度

经典问题 - 我想在提交之前验证表单.

我的提交按钮触发一个动作(简单的调度或thunk).如果表单有效,请提交 - 否则,触发错误消息.

简单的解决方案:调度一个动作,例如VALIDATE_AND_SUBMIT,它在reducer中将验证表单,并提交或设置错误状态.

我觉得这些是两种不同的行为:有效

{
   type: "VALIDATE",
   formData
}
Run Code Online (Sandbox Code Playgroud)

这应验证并设置错误.

{
   type: "SUBMIT",
   // get form data and errors from state
}
Run Code Online (Sandbox Code Playgroud)

提交 - 如果没有错误状态,则应提交.

即使我使用redux-thunk,我也无法从第一个VALIDATE操作获得反馈.我的思维过程是反模式吗?如何在提交表单之前进行验证?

redux redux-thunk react-redux

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

当嵌套在“智能” Redux容器组件下时,React路由不会自动更新

我正在尝试使用React,React-router和Redux创建一个Electron应用程序。我发现,当我将交换机/路由逻辑嵌套在一个纯粹的表示性组件(Page)下时,我的路由逻辑绝对可以正常工作,但是如果嵌套在“智能”容器组件。

在我的React组件层次结构的顶部附近(在下面HashRouter),我有一个Page

export default function Page (props) {
  return (
      <div className={`${styles.page}`}>
        <SideBar/>
        <DetailPane>{props.children}</DetailPane>
      </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

在这两个容器组件中,DetailPaneSideBar是包装在同名表示组件周围的。

在启动时(以及在热重载期间),我使用以下函数创建我的React层次结构:

export default () => (
    <Router>
      <Page>
        <Switch>
          <Route exact path='/txDefinitions/:definitionName/:fieldName' component={FieldPage}/>
          <Route exact path='/txDefinitions/:definitionName?' component={DefinitionPage}/>
          <Route exact path='/rxDefinitions/:definitionName?' component={DefinitionPage}/>
          <Route exact path='/'/>
          <Route component={Route404}/>
        </Switch>
      </Page>
    </Router>
Run Code Online (Sandbox Code Playgroud)

这意味着它<Switch>...</Switch>嵌套在下面<DetailPane>

如果我尝试浏览我的应用程序(单击侧栏中的链接),则在强制重新加载Electron应用程序之前,实际上不会看到详细信息窗格呈现新组件。

不过,我觉得如果我忽略按预期的路由作品DetailPane来自Page

export default function Page (props) {
  return (
      <div className={`${styles.page}`}>
        <SideBar/>
        {props.children} …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router redux react-redux

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

总和计算总数不正确

我正试图解决这个问题:

编写一个从用户读取文件名的Java程序.该文件最多包含20个整数.声明一个大小为20的数组.读取文件中的所有值并将它们存储在数组中.请注意,文件中可以包含任意数量的整数.最后,计算并显示存储在数组中的所有整数的总和.使用异常处理来检测:

  • 来自文件的不正确输入,其中读取非整数
  • 使用无效数组索引
  • 文件不存在的文件名无效

我目前的问题是错误的总和.这是我的代码

package labtask.pkg10;
import java.io.File;
import java.io.*;
import java.util.*;
import java.util.ArrayList;

public class task2 {
   public static void main(String[] args) {
       int integers[] = new int[20];
       Scanner read = new Scanner(System.in);
       int sum = 0;
       int num = 0;
       String filename;
       System.out.println("enter the file name ");
       filename = read.next();

       try {
           File file = new File(filename);
           Scanner inputFile = null;
           inputFile = new Scanner(file);

           int i = 0;
           while (inputFile.hasNext()) {
               num = Integer.parseInt(inputFile.next());

               integers[i] …
Run Code Online (Sandbox Code Playgroud)

java

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