Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为相似类型的操作创建一个缩减程序

为相似类型的操作创建一个缩减程序
EN

Stack Overflow用户
提问于 2019-03-12 03:04:44
回答 1查看 32关注 0票数 1

在我的项目中,我在redux中持久化选项按钮的状态。有不同的按钮组,我在单函数handleClick中处理它们的点击动作。但它似乎不起作用。我应该为每个按钮组创建不同的处理程序吗?有没有人能给出最好的解决方案?

代码:

代码语言:javascript
运行
AI代码解释
复制
import React, { Component } from "react";
import { Button } from "semantic-ui-react";
import { withRouter } from "react-router";
import Answers from "../Answers/Answers";
import { handleClick } from "../../actions/handleClickAction"
import { connect } from 'react-redux'

class Section extends Component {
    handleClick = event => {
        this.props.handleClick(event);
    };

    render() {
        console.log(this.state);

        let styles = {
            width: '50%',
            margin: '0 auto',
            marginBottom: '15px'
        }
        const { history } = this.props;
        const { que1, que2, que3 } = this.state;
        return (
            <>
                <p>1. I was stressed with my nerves on edge.</p>
                <Button.Group widths="5" onClick={this.handleClick} style={styles}>
                    <Answers selected={this.state.que1} style={{ backgroundColor: 'red' }} />
                </Button.Group>
                {` `}
                <p>2. I lost hope and wanted to give up when something went wrong.</p>
                <Button.Group widths="5" onClick={this.handleClick} style={styles}>
                    <Answers selected={this.state.que2} style={{ backgroundColor: 'red' }} />
                </Button.Group>
                {` `}
                <p>3. I feel very satisfied with the way I look and act</p>
                <Button.Group widths="5" onClick={this.handleClick} style={styles}>
                    <Answers selected={this.state.que3} style={{ backgroundColor: 'red' }} />
                </Button.Group>
                <p />
                {` `}
                <Button
                    disabled={!que1 || !que2 || !que3}
                    onClick={() => history.push("/section2", [this.state])}
                >
                    NEXT
        </Button>
            </>
        );
    }
}

export default withRouter(connect(null, { handleClick })(Section));

main.js

代码语言:javascript
运行
AI代码解释
复制
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import store from "./store";
import { Provider } from 'react-redux'

ReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById("root"));

index.js

代码语言:javascript
运行
AI代码解释
复制
import { combineReducers } from "redux";
import selectOptionReducer from "./selectOptionReducer";

export default combineReducers({
  selectOption: selectOptionReducer
})

selectOptionReducer.js

代码语言:javascript
运行
AI代码解释
复制
import { SELECT_OPTION } from "../actions/types"

const initialState = {
  que1: "",
  que2: "",
  que3: "",
  que4: "",
  que5: ""
}

export default (state = initialState, action) => {
  switch (action.type) {
    case SELECT_OPTION:
      return {
        ...state,
        que1: action.payload,
        que2: action.payload,
        que3: action.payload,
        que4: action.payload,
        que5: action.payload
      };
    default:
      return state;
  }
}

store.js

代码语言:javascript
运行
AI代码解释
复制
import { createStore } from 'redux'
import selectOptionReducer from "./reducers/selectOptionReducer";

const store = createStore(selectOptionReducer);

export default store;

handleClickAction.js

代码语言:javascript
运行
AI代码解释
复制
import { SELECT_OPTION } from "./types"

export const handleClick = e => {
  return {
    type: SELECT_OPTION,
    payload: e.target.attributes.getNamedItem("data-key").value
  }
}

输出:

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 04:05:48

据我所知,该reducer将所有问题的状态设置为每个操作的相同答案。

您需要一种方法来指定正在回答的问题。

我会使用类似下面的代码,它为每个问题创建一个自定义的onClick处理程序,并将问题id传递给动作创建者,以包含在reducer有效负载中。然后,reducer使用该id仅更新正在回答的问题。

(未测试)

selectOptionReducer.js

代码语言:javascript
运行
AI代码解释
复制
export default (state = initialState, action) => {
  switch (action.type) {
    case SELECT_OPTION:
      const { questionId, value } = action.payload;
      return { ...state, [questionId]: value };
    default:
      return state;
  }
}

handleClickAction.js

代码语言:javascript
运行
AI代码解释
复制
export const handleClick = ({ questionId, e }) => {
  return {
    type: SELECT_OPTION,
    payload: { questionId, value: e.target.attributes.getNamedItem("data-key").value }
  }
}

组件

代码语言:javascript
运行
AI代码解释
复制
class Section extends Component {
  handleClick = questionId => e => {
      this.props.handleClick({ questionId, e });
  };

  ...

  <Button.Group widths="5" onClick={this.handleClick("que1")} style={styles}>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55113514

复制
相关文章
如何将数据中心迁移到云端
随着云计算技术得到了大肆宣传,并为用户、媒体、厂商不断地讨论,在IT行业内实施云计算已经成为一种浪潮,但是要真正实施云计算还存在一定的风险和挑战。诚然,把基础架构迁移到云平台上有很多优势,但如果没能咨询考虑,系统性能反而会受到妨碍,把基础架构从物理迁移到虚拟才能带来最好的资源利用率。我们需要把物理到虚拟,然后在迁移到云,一步一步地进行,轻松入云。 首先要分析物理环境。当把物理架构加进环境之后,资本支出就会增加。仔细分析环境能帮企业理清没有得到完全利用的资产。分析完成后,物理机到虚拟机的迁移就可以
静一
2018/03/15
1.3K0
AWS-WinServer2012离线迁移到腾讯云
在桌面输入快捷键win+r打开运行窗口,然后输入 diskmgmt.msc,按 Enter,打开 “磁盘管理”。
赵智勇
2020/08/26
2.3K0
AWS-WinServer2012离线迁移到腾讯云
如何将数据库从SQL Server迁移到MySQL
首先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型。具体操作是在Powerdesigner中选择“File”,“Reverse Engine”再选择Database,将DBMS选择为SQL Server,如图:
深蓝studyzy
2022/06/16
4.2K0
如何将数据库从SQL Server迁移到MySQL
AWS(Amazon Linux 2 AMI)在线迁移到腾讯云
(4)检查 SELinux 是否已打开。如果 SELinux 已打开,请关闭 SELinux
赵智勇
2020/08/26
2.2K0
AWS(Amazon Linux 2 AMI)在线迁移到腾讯云
如何将 Web 框架迁移到 Serverless
Serverless 通常翻译为「无服务架构」,是一种软件系统设计架构思想和方法,并不是一个开发框架或者工具。他的出现是为了让开发者更加关注业务的开发,而将繁杂的运维和部署交给云厂商。Serverless 由 Faas 和 Baas 组成,Faas 为开发者提供业务运算环境,然后与 Baas 提供的数据和存储服务,进行交互,从而提供与传统服务一致的体验。但是由于 Faas 是无状态的,并且其运行环境是有读写限制的,最重要的是它是基于事件触发的。因此如果传统 Web 服务想迁移到 Serverless 上,
腾讯云serverless团队
2020/07/03
1.3K0
如何将安全运营转移到云端
ESG公司最近进行的一项调查发现,很多组织正在积极地使用基于云计算的方案来替代内部部署安全分析和运营技术。这种转变既带来短期利益,也带来战略利益。
静一
2020/06/24
4320
如何将.NET项目迁移到.NET Core
很多.net项目在开发的时候,.net core还没有出现或者还么有成熟,如今.netcore3.1已经出现,其技术风险已经比较低,今天对项目如何迁移到.net core做一个简单的梳理,瑾做参考。
conanma
2021/12/29
1.8K0
如何将源服务器数据在线迁移到腾讯云CVM
在上云/迁云过程中,会面临客户的各种需求,如何将源服务器上的系统、应用程序等从自建机房(IDC)或云平台等源环境迁移至腾讯云,是目前常遇到的问题。腾讯云推出了在线迁移服务,可以完美解决各类服务器数据迁移的问题。
DRRR
2020/05/08
7K0
如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?
EasyCVR支持多协议、多类型设备接入,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海康SDK、大华SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。
EasyNVR
2022/07/30
5930
如何将EasyCVR平台RTSP接入的设备数据迁移到EasyNVR中?
WordPress迁站方法
首先,将自己的网站文件夹打成压缩包,将数据库备份成.sql文件,一同下载到本地(如果迁站前后的域名在同一个服务器,直接放在别的地方就可以)这很简单就不给图了。
叮当叮
2020/04/20
1.4K0
WordPress迁站方法
如何将 github pages 迁移到 vercel 上托管
早期网站使用 github pages,后来迁移到 coding,最近又放到腾讯云网站静态托管,无论是 coding 的 cos 存储桶,还是静态网站托管
itclanCoder
2021/01/12
2.5K0
如何将 github pages 迁移到 vercel 上托管
如何将业务迁移到云信息管理
管理组织最关键的数据从来就不是简单的事情。了解所有可用于不断增长的数据源列表的各种技术选项使得这项工作变得更加困难,并且在组织内涵盖了越来越多的功能。企业需要通过更加战略性的方式采用云计算,从而发展他们应对这一挑战的方式。 负责组织数据保护技术决策的IT专业人员需要意识到,现在是超越“孤岛”方式的时候了,组织的信息在不同的地点和存储类型的重复复制,可以通过信息管理的角度来看待他们的数据景观。 传统的孤岛方法有很大的局限性。组织可能用这种方法有机地成长起来。备份主服务器,添加电子邮件归档,灾难恢复设置,采购
静一
2018/03/28
9640
如何将业务迁移到云信息管理
如何将数据分析带到云端
2017年,《经济学人》发表了一篇文章,标题为世界上最有价值的资源不再是石油,而是数据。事实上,金融服务部门的企业,尤其是资本市场的企业早就清楚这一点了。
静一
2022/12/08
5150
如何将机器学习模型转移到产品中
针对于特定问题(例如自然语言处理,即 NLP,或图像识别)的深度学习模型开发、训练和调参,需要耗费时间与资源。这通常还包括使用功能强大的处理器来训练大型数据集上的模型。然而,一旦模型成功运作,彼时使用它来对新数据生成预测就会更简单,计算成本也会更低。当下唯一的困难是将模型从其开发环境转移到应用程序产品中。
StoneDemo
2018/09/13
2.2K0
如何将机器学习模型转移到产品中
苹果新旧手机数据转移_换机必备知识:如何将数据转移到Oppo手机上
现在的智能手机越来越便宜了,换手机是经常的事情。 但唯一的缺点是更换手机时新旧手机的数据备份很麻烦。
全栈程序员站长
2022/09/01
2.1K0
苹果新旧手机数据转移_换机必备知识:如何将数据转移到Oppo手机上
Facebook 如何将 Instagram 从 AWS 搬到自己的服务器
当Instagram在2012年加入Facebook,我们快速建立了大量的Facebook基础设施整合点,以加速产品开发,使社区更加安全。一开始我们通过使用ad-hoc端点在Facebook web服务之间有效传递来构建这些整合。不过我们发现这种方式可能稍显笨拙,还限制了我们使用内部的Facebook服务的能力。
星哥玩云
2022/07/03
1.2K0
Nginx 如何将所有 HTTP 的流量转移到 HTTPS
我们都知道,如果希望将 http 的访问自动切换到 https ,其实有多种方法可以去做。
HoneyMoose
2022/05/06
8460
Nginx 如何将所有 HTTP 的流量转移到 HTTPS
智能云上手指南:如何将历史数据迁移到万象优图
本文介绍了如何将历史数据迁移至腾讯云对象存储(COS)服务,并使用万象优图进行数据上传。主要包括了配置COS、对象存储服务迁移工具、万象优图迁移三大部分,其中配置COS包括添加域名、配置访问权限、存储桶列表和添加存储桶,对象存储服务迁移工具包括使用迁移工具、迁移对象、查看迁移记录,万象优图迁移包括迁移对象、上传策略、查看迁移记录。
腾讯云开发者社区
2017/06/21
2.2K1
智能云上手指南:如何将历史数据迁移到万象优图
0671-6.2.0-如何将CDH5.12的Hive元数据迁移到CDH6.2
这里我们假定一个场景,你需要迁移CDH5.12到CDH6.2,CDH5.12和CDH6.2分别是两个不同的集群,我们的工作主要是HDFS数据和各种元数据从CDH5.12迁移到CDH6.2,本文不讨论HDFS数据的迁移也不讨论其他元数据的迁移比如CM或Sentry,而只关注Hive元数据的迁移。这里的问题主要是CDH5.12的Hive为1.1,而CDH6.2中Hive已经是2.1.1,Hive的大版本更新导致保存在MySQL的schema结构都完全发生了变化,所以我们在将CDH5.12的MySQL数据导入到CDH6.2的MySQL后,需要更新Hive元数据的schema。首先Fayson会搭建2个集群包括CDH5.12和CDH6.2,为了真实,我们在接下来的模拟过程中,创建的Hive表包含分区,视图和UDF,好方便验证是否迁移到CDH6.2都能正常运行。具体如何迁移Fayson会在接下来的文章进行详细描述。
Fayson
2019/07/17
1.7K0
0671-6.2.0-如何将CDH5.12的Hive元数据迁移到CDH6.2
如何将物理机Windows系统迁移到VMware虚拟机?
如何将物理机上的Windows系统迁移到VMware虚拟机?本文详细介绍如何使用DiskGenius免费版将物理电脑上的Windows操作系统转移至VMware虚拟机。
用户7704932
2020/09/01
6.5K0

相似问题

关闭tkinter窗口时,python程序不会结束

1221

在Tkinter中嵌入动画Matplotlib导致程序永远不会结束

138

程序在使用tkinter和pyplot时提前结束

11

在Tkinter框架中绘图,在Tkinter中更新信息

12

Python程序在使用模块Tkinter时不会终止

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档