第二次单击时 redux 状态值发生变化

2023-12-05

我是 redux 的新手,我已将其与我的 React 应用程序集成,但我有一个关于小测试的说明。

在下一个示例中,我看到用户的值在我的第二次单击时添加了。

减速机:

const initialState = {
    user: '',
    password: ''
}

export const admin = (state = initialState, action) => {
    switch (action.type) {
        case 'admin':
            return state = {
                user: action.user,
                password: action.password
            }
        default:
            return initialState;
    }
}

行动 :

const adminAction = (user, password) => {
    return {
        type: 'admin',
        user: user,
        password: password
    }
}

export default adminAction; 

改变存储中的状态。


const admin = useSelector(state => state.admin);
const dispatch = useDispatch();

var user,pass = '';

const adminChangeUsername = (event) => {
  user = event.target.value;
}

const adminChangePassword = (event) => {
  pass = event.target.value;
}

const click= (event) => {
    event.preventDefault();
    dispatch(adminAction(user,pass));
    console.log(store.getState())
    console.log(admin.user)
}

the click与按钮关联的 void 。

第一次单击时会发生以下情况:
该值已更改store但是管理员用户值仍然为空。

第二次点击时: 这store值已更新 这admin价值已经增加。

我的问题是为什么只有第二次点击才会触发从商店检索值?


您看到旧值的原因admin in the click功能是由于闭包导致陈旧的道具和状态问题。JavaScript 闭包如何工作?

JavaScript 中的每个函数都维护对其外部的引用 词汇环境。该参考用于配置执行 调用函数时创建的上下文。该参考使 函数内部的代码可以“查看”函数外部声明的变量 函数,无论函数何时何地被调用。

在 React 函数组件中,每次组件重新渲染时,都会重新创建闭包,因此一个渲染中的值不会泄漏到另一个渲染中。出于同样的原因,您想要的任何状态都应该在useState or useReducer钩子,因为它们将保留在重新渲染之后。

有关其反应方面的更多信息,请参见反应常见问题解答


除了问题的主要答案之外,您还应该useState的值user and pass在你的组件中。否则,这些值不会在重新渲染之间保留。

否则,您可以不使用受控组件,但不能使用两者的奇怪组合。

下面的工作示例:

const initialstate = {
  user: '',
  password: '',
};

const adminReducer = (state = initialstate, action) => {
  switch (action.type) {
    case 'admin':
      return (state = {
        user: action.user,
        password: action.password,
      });
    default:
      return initialstate;
  }
};

const adminAction = (user, password) => {
  return {
    type: 'admin',
    user: user,
    password: password,
  };
};

const store = Redux.createStore(Redux.combineReducers({ admin: adminReducer }));

const App = () => {
  const store = ReactRedux.useStore();
  const admin = ReactRedux.useSelector((state) => state.admin);
  const dispatch = ReactRedux.useDispatch();
  const [user, setUser] = React.useState('');
  const [pass, setPass] = React.useState('');

  const adminChangeUsername = (event) => {
    setUser(event.target.value);
  };

  const adminChangePassword = (event) => {
    setPass(event.target.value);
  };

  const click = (event) => {
    event.preventDefault();
    dispatch(adminAction(user, pass));
    console.log('store has the correct value here', store.getState());
    console.log('admin is the previous value of admin due to closures:', admin);
  };

  return (
    <div>
      <input
        onChange={adminChangeUsername}
        value={user}
        placeholder="username"
      />
      <input
        onChange={adminChangePassword}
        value={pass}
        type="password"
        placeholder="password"
      />
      <button onClick={click}>submit</button>

      <p>This shows the current value of user and password in the store</p>
      <p>User: {admin.user}</p>
      <p>Pass: {admin.password}</p>
    </div>
  );
};

ReactDOM.render(
  <ReactRedux.Provider store={store}>
    <App />
  </ReactRedux.Provider>,
  document.querySelector('#root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.5/redux.min.js" integrity="sha256-7nQo8jg3+LLQfXy/aqP5D6XtqDQRODTO18xBdHhQow4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-redux/7.2.0/react-redux.min.js" integrity="sha256-JuJho1zqwIX4ytqII+qIgEoCrGDVSaM3+Ul7AtHv2zY=" crossorigin="anonymous"></script>

<div id="root"/>

使用原始变量代替的示例useState。您会注意到,在这种情况下,通过使用 var 并在输入上保留 value 属性,它会阻止输入密码。它对用户输入“起作用”的原因是因为用户变量一开始是未定义的而不是空字符串。

const initialstate = {
  user: '',
  password: '',
};

const adminReducer = (state = initialstate, action) => {
  switch (action.type) {
    case 'admin':
      return (state = {
        user: action.user,
        password: action.password,
      });
    default:
      return initialstate;
  }
};

const adminAction = (user, password) => {
  return {
    type: 'admin',
    user: user,
    password: password,
  };
};

const store = Redux.createStore(Redux.combineReducers({ admin: adminReducer }));

const App = () => {
  const store = ReactRedux.useStore();
  const admin = ReactRedux.useSelector((state) => state.admin);
  const dispatch = ReactRedux.useDispatch();
  
  var user,pass='';

  const adminChangeUsername = (event) => {
    user = event.target.value;
  };

  const adminChangePassword = (event) => {
    pass = event.target.value;
  };
  const click = (event) => {
    event.preventDefault();
    dispatch(adminAction(user, pass));
    console.log('store has the correct value here', store.getState());
    console.log('admin is the previous value of admin due to closures:', admin);
  };

  return (
    <div>
      <input
        onChange={adminChangeUsername}
        value={user}
        placeholder="username"
      />
      <input
        onChange={adminChangePassword}
        value={pass}
        type="password"
        placeholder="password"
      />
      <button onClick={click}>submit</button>

      <p>This shows the current value of user and password in the store</p>
      <p>User: {admin.user}</p>
      <p>Pass: {admin.password}</p>
    </div>
  );
};

ReactDOM.render(
  <ReactRedux.Provider store={store}>
    <App />
  </ReactRedux.Provider>,
  document.querySelector('#root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.5/redux.min.js" integrity="sha256-7nQo8jg3+LLQfXy/aqP5D6XtqDQRODTO18xBdHhQow4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-redux/7.2.0/react-redux.min.js" integrity="sha256-JuJho1zqwIX4ytqII+qIgEoCrGDVSaM3+Ul7AtHv2zY=" crossorigin="anonymous"></script>

<div id="root"/>

完全不受控制的输入的示例。这根本不需要变量:

const initialstate = {
  user: '',
  password: '',
};

const adminReducer = (state = initialstate, action) => {
  switch (action.type) {
    case 'admin':
      return (state = {
        user: action.user,
        password: action.password,
      });
    default:
      return initialstate;
  }
};

const adminAction = (user, password) => {
  return {
    type: 'admin',
    user: user,
    password: password,
  };
};

const store = Redux.createStore(Redux.combineReducers({ admin: adminReducer }));

const App = () => {
  const store = ReactRedux.useStore();
  const admin = ReactRedux.useSelector((state) => state.admin);
  const dispatch = ReactRedux.useDispatch();

  const click = (event) => {
    event.preventDefault();
    const user = event.currentTarget.user.value;
    const pass = event.currentTarget.pass.value;
    dispatch(adminAction(user, pass));
    console.log('store has the correct value here', store.getState());
    console.log('admin is the previous value of admin due to closures:', admin);
  };

  return (
    <div>
      <form onSubmit={click}>
        <input name="user" placeholder="username" />
        <input name="pass" type="password" placeholder="password" />
        <button type="submit">submit</button>
      </form>
      <p>This shows the current value of user and password in the store</p>
      <p>User: {admin.user}</p>
      <p>Pass: {admin.password}</p>
    </div>
  );
};

ReactDOM.render(
  <ReactRedux.Provider store={store}>
    <App />
  </ReactRedux.Provider>,
  document.querySelector('#root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.5/redux.min.js" integrity="sha256-7nQo8jg3+LLQfXy/aqP5D6XtqDQRODTO18xBdHhQow4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-redux/7.2.0/react-redux.min.js" integrity="sha256-JuJho1zqwIX4ytqII+qIgEoCrGDVSaM3+Ul7AtHv2zY=" crossorigin="anonymous"></script>

<div id="root"/>

为什么关闭与该帖子相关

由于原始代码的同步性质,它是possible说的原因是admin.user记录的值不是新值只是因为组件尚未重新渲染。然而,重点仍然是admin该渲染的值是一成不变的,永远不会因为关闭而改变。即使 React 渲染与 redux 状态更新同步,admin不会改变。

正是由于这样的原因,即使在更简单的情况下,考虑闭包以及一切如何充分发挥作用也很重要,这样您就不会在更复杂的情况下陷入困境。

例如,不正确的心智模式会如何阻碍你,想象一下你假设原因是console.log(admin.user)原始示例中没有显示正确的值solely因为该组件尚未重新渲染。您可能会认为设置超时等待重新渲染会让您看到新值。

想象一下,尝试添加自动保存功能,您希望每 10 秒将 admin 的当前值保存到本地存储或 API。您可以设置一个间隔 10 秒的效果来记录admin使用空的依赖项数组,因为您希望它在组件卸载之前不会重置。这显然是不正确的,因为它不包括admin依赖项中的值,但它会突出显示,无论您提交值并更改多少次admin在redux状态下,这个effect的值永远不会改变,因为这个effect总是从初始值开始运行admin在第一次渲染时。

useEffect(()=>{
  const intervalId = setInterval(()=>{console.log(admin)},10000);
  return ()=>clearInterval(intervalId);
},[])

闭包是一个整体问题,如果你对事情的运作方式有错误的思维模式,你很容易就会遇到麻烦。


有关关闭的更多信息:

闭包是捆绑在一起(封闭)的函数的组合 参考其周围状态(词汇环境)。在 换句话说,闭包可以让你访问外部函数的作用域 来自内部函数。在 JavaScript 中,每次都会创建闭包 函数在函数创建时创建。

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

正如 MDN Web 文档中提到的,每次创建函数时,该函数都会永久访问周围代码中的变量。本质上,这些函数可以访问它们范围内的所有内容。

在 React 函数组件中,每个渲染都会创建新函数。

在这个例子中,当App被渲染时:

const App = ()=>{
    const admin = useSelector(state => state.admin);
    const dispatch = useDispatch();

    var user,pass = '';

    const adminChangeUsername = (event) => {
      user = event.target.value;
    }

    const adminChangePassword = (event) => {
      pass = event.target.value;
    }

    const click= (event) => {
        event.preventDefault();
        dispatch(adminAction(user,pass));
        console.log(store.getState())
        console.log(admin.user)
    }

}
  1. admin 变量根据 redux 存储的当前状态初始化到 App 的范围内(即{ user: '', password: ''}).
  2. 调度变量被初始化为 redux 的store.dispatch
  3. 用户被初始化为undefined
  4. pass 被初始化为''
  5. adminChangeUsername 和 adminChangePassword 函数已初始化。他们可以访问(和使用)用户并从他们创建的闭包中传递。
  6. 单击已初始化。它可以在关闭时访问(并使用)用户、通行证、商店和管理员。

click始终只能在创建时访问当前重新渲染的管理值,因为单击函数在创建时在其周围创建了一个闭包。一旦点击事件发生,并且 adminAction 被调度,click不会改变它来自哪个渲染,所以它可以访问admin初始化时的变量it曾是。并且每次渲染时,admin变量被重新初始化,因此是一个不同的变量。

这里的主要问题不仅仅是异步性质,而是事实 函数根据当前状态使用状态值 闭包和状态更新将反映在下一次重新渲染中 现有的关闭不受影响,但会创建新的关闭。现在 在当前状态下,钩子中的值是通过现有的获得的 闭包,当重新渲染发生时,闭包将根据 关于是否再次重新创建函数

  • usestate-set-method-not-reflecting-change-immediately - Shubham Khatri

无论您是否在点击处理程序中设置超时,admin由于该关闭, value 永远不会成为新值。即使 React 碰巧重新渲染立即地致电调度后。

您可以使用useRef创造一个可变的价值current财产will在重新渲染之间保持不变,此时,React 重新渲染的异步特性实际上开始发挥作用,因为在 React 重新渲染组件之前,您仍然拥有旧值几毫秒。


在这个例子中https://codesandbox.io/s/peaceful-neumann-0t9nw?file=/src/App.js,可以看到超时记录的admin值还是旧值,但是超时记录的adminRef.current值却是新值。原因是 admin 指向在上一个渲染中初始化的变量,而 adminRef.current 在重新渲染之间保持相同的变量。以下代码沙箱中的日志示例:

console logs from CodeSandbox example run

关于事件的顺序,唯一可能真正让你感到惊讶的是useSelector用新数据调用before发生重新渲染。原因是每当 redux 存储发生更改时,react-redux 都会调用该函数以确定if由于更改,组件需要重新渲染。完全可以设置adminRef.current内的财产useSelector始终可以访问 admin 的最新值,而无需store.getState().

在这种情况下,只需使用就足够简单了store.getState()如果您需要访问钩子关闭之外的最新状态,则获取当前的 redux 状态。我经常倾向于在长期运行的效果中使用类似的东西,因为store更改时不会触发重新渲染,并且可以帮助提高性能关键位置的性能。不过,出于同样的原因,应该谨慎使用它,因为它总是能让您访问最新状态。

我在这个例子中使用了超时,因为这是突出闭包效果的实际性质的最佳方式。想象一下,如果您愿意,超时是一些异步数据调用,需要一些时间才能完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二次单击时 redux 状态值发生变化 的相关文章

  • JavaScript CSV 验证

    如何检查文本框中的逗号分隔值并在未找到时发出警报 如果有的话 里面应该有字符 比如A B C D function validate validate text box
  • React hooks 状态变量在重新渲染后未更新

    在下面的示例中 我有一个想要更新的元素 水果 数组 并使用更新后的数组执行其他操作 在本例中保存更新后的列表 我的理解是重新渲染状态将更新 但它不在这里 或者状态更新和我的操作之间存在延迟 In the addFruit功能我可以看到 Pe
  • 为什么 Jshint 在此 if 语句中说“变量已定义”?

    我有这个代码 if something is true var someVar true else var someVar false JsHint 表示在 else 语句部分 someVar 已被定义 这是为什么 我该如何解决 Thank
  • 如何使用标准 JavaScript 在 CSS 转换结束后立即重新启动它?

    我构建了一种密码生成器 只要倒计时到期 它就会显示新密码 不幸的是 我只设法弄清楚如何运行我的代码一次 倒计时由一个简单的 CSS 过渡组成 我想保留它 因为它比我的其他尝试平滑得多 其中我尝试使用 JavaScript 重复更新宽度 va
  • 如何从 javascript 错误对象读取错误消息

    有人可以帮我解决以下问题吗 我正在通过 redux 操作进行后调用 如下所示 export const addEmployee firstName surname contactNumber email gt async dispatch
  • Javascript:使用 IIFE 和块语句之间的区别

    IIFE主要用于封装作用域 function let myVar 10 not global 但为什么不直接使用块语句呢 let myVar 10 also not global 除了范围封装之外 进一步使用 IIFE 是否还有其他好处 块
  • 多次训练brain.js?

    在第一次训练后 如何将新信息 仅新信息 而不是所有信息 因为这会花费太多性能 训练到我的用 Brain js 制作的神经网络 它有点粗糙 但您可以使用以下结构来实现 如果我们加入 2 个训练数据集 旧数据集与新数据集 然后重新训练keepN
  • 将 SVG 路径转换为绝对命令

    给定一个 SVG Path 元素 如何将所有路径命令转换为绝对坐标 例如 转换此路径
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 使用 Javascript/Node.js 在代码内执行 mongoimport

    node js javascript 中是否有任何库可供个人使用mongoimport在代码中 据我了解 mongoimport 有点像 exe 您必须先执行它 然后才能使用其文本输入环境 是否可以在我的代码中执行 mongoimport
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • 如何在打字稿中使用外部js

    我通过 Typescript 代码生成 Angular JS 代码 在一种情况下 我需要将外部 JS 文件添加到我的打字稿文件中 并且需要访问 js 文件中的类 我像这样添加js文件
  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • 如何使用 Javascript 在 html 文件中搜索字符串?

    我有 5 个 html 文件 并且有一个搜索表单 我想用它来搜索这些 html 文件中的文本
  • 如何将数据推送到嵌套对象

    如何将另一个元素推入variables来自以下对象的属性 var request name Name id 3 rules name Rule name tags tagId 1 variables variable var1 matchT
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • 如何从 Cloud Functions for Firebase 文件夹读取证书文件

    我正在尝试读取 certs 文件夹下的文件 如下所示 functions certs idp public cert perm 这是我用来读取文件的代码 fs readFileSync path join dirname certs idp
  • Safari 扩展将消息发送到特定选项卡

    有没有办法从全局页面发送消息到特定选项卡 我目前正在做的是 在创建选项卡时 注入的脚本会创建一个唯一的 ID 并将包含该编号的消息发送到全局页面 并且全局页面会保存该编号 如果全局页面需要发送一些数据到一个tab 即 tab 3 然后全局页

随机推荐

  • Sweave 文档中 R 注释中对图形的动态引用

    我想找到一种使用 LaTeX 的方法 ref 用于在 Sweave Rnw 文件中的 R 代码中进行注释的标记 这里有两个例子 一个是印刷版的 http cm bell labs com cm ms departments sia proj
  • SetLayeredWindowAttributes 使窗口透明仅在部分时间起作用

    我试图使窗口透明 以便只有部分内容可见 我尝试使用SetLayeredWindowAttributes为了实现这一点 这使窗口按照我想要的方式透明 但是只有当窗口图片的一部分位于桌面可见区域之外时 它才有效 由于某种原因 每当窗口完全在屏幕
  • 声音录制

    我是 Android 新手 我正在尝试构建一个应用程序来记录音频数据 我正在使用带有 ADT 插件的 Eclipse Galileo IDE 我的应用程序针对的是 Andriod 2 1 平台 不幸的是example开发指南中提供的抛出许多
  • Python - 导入包失败

    我在导入包时遇到问题 我的文件结构是这样的 filelib init py converters init py cmp2locus py modelmaker init py command file py 模块内command file
  • 我在运行 ant build 时收到“**** 错误的 JAVA 版本 ****”

    我的问题不是这个问题 因为我的java版本没有差异 我安装了 java 1 8 45 jdk 和 jre 后 运行 ant clean all 的构建失败 它说 Java 版本错误 环境检查失败 您使用的版本不受支持 爪哇 请确保您使用的是
  • 如何在 JPQL 或 HQL 查询中使用 MySQL CONVERT_TZ 函数

    我目前有一个表MySQL数据库有一个startDate and endDate两者都是timestamps 这与使用 hibernate 的代码相关联 我可以使用以下 HQL 返回这些 SELECT startDate endDate FR
  • 迭代目录中的所有文件并查找和替换文本 - Python

    宝贝全新 这是弗兰肯斯坦从几个类似的主题组合在一起的 其中没有一个似乎涵盖了在文件循环中嵌套查找和替换的必要步骤 我试图迭代特定类型 此处列为 LIC 的文件夹中的每个文件 不是递归 我只有一个文件夹级别 并替换一小段文本 以下是我所能得出
  • MSBuild XmlMassUpdate 任务

    我想问一个有关 MSBuild 任务 XmlMassUpdate 行为的简单问题 有没有人发现该任务只会将唯一节点复制到内容 XML 中 例如 如果我有一个客户端节点 它有多个称为端点的子节点 那么它只会批量复制第一个端点节点 同时消除所有
  • 如何使用spring全局配置jackson?

    为了序列化反序列化对象 我使用 Jackson 作为流程 JsonSerialize using LocalDateSerializer class JsonDeserialize using LocalDateDeserializer c
  • 如何在本机反应中隐藏特定屏幕上的底部导航栏?

    我正在使用 React Native 和 React Native Navigation 来构建我的应用程序 目前 我有三个底部选项卡 主页 上传视频和消息 选择 上传视频 选项卡后 我想渲染 上传视频 组件并隐藏该屏幕上的底部选项卡 并显
  • 从 JDBC 创建 Spark 数据帧时如何指定 sql 方言?

    我在使用 Spark 通过自定义 JDBC 读取数据时遇到问题 我将如何覆盖通过 jdbc url 推断的 sql 方言 有问题的数据库是 vitess https github com youtube vitess 它运行一个 mysql
  • 在 asp.net 中显示“保存文件”对话框

    这是在 asp net 中 我正在参考用户的输入创建 pdf 文件 该 pdf 文件保存在服务器上的文件夹中 现在可以使用response redirect 在浏览器中显示该文件 但我想向用户显示 保存文件 对话框 就像我们从网站下载 ex
  • 选择 CSS 中的特定元素

    抱歉 帖子标题非常笼统 但我在这里追求的是 div span a href link 1 a a href link 2 a span a href link 3 a div 我如何在 CSS 中选择 链接 3 无需编辑该 Htmlat a
  • Firebase 身份验证和 Google 日历

    我想做的是使用 Firebase 向 Google 进行身份验证 然后从 Google 日历获取一些数据 我让第一部分工作了 我可以通过 Google 进行身份验证并获取用户名 电子邮件等 但是一旦添加calendar to the sco
  • Button.PerformClick 的作用是什么?

    我知道这可能是一个微不足道的问题 但我只是想知道调用是否有任何优势Button PerformClick而不是直接调用按钮的点击事件 MSDN 文档简单地说 为按钮生成 Click 事件 这是否意味着它只是与调用按钮的单击事件执行相同的操作
  • 绘图中的保留热图

    为了方便起见 我将保留图从 Seaborn 转移到 Plotly 以便稍后对其应用形状 plotly库似乎适合this graph objects 但我不明白如何传递DataFrame数据 import pandas as pd impor
  • 访问连续表:添加控件而不修改基础表?

    我正在制作一个简单的访问表单 连续视图 详细信息部分中有一个复选框 页脚中有一个命令按钮 这样 用户可以使用复选框 选择 多个记录 然后单击按钮上的命令按钮来运行更新所选记录的脚本 无需永久存储这些检查值 通常 我会向基础表添加一个布尔字段
  • 更改文本区域中特定部分的文本颜色

    是否有可能更改 HTML 文本区域中某些部分的文本颜色 我喜欢在我的网站上输出一些突出显示的 PHP 代码 并可以通过单击此文本区域来选择完整的代码 我已经编写了一个 JavaScript 函数来选择完整的文本 但如果我尝试在文本周围放置跨
  • 将图钉放在屏幕中央,MKMapView

    我有一个使用以下代码删除 pin 的功能 ParkPlaceMark placemark ParkPlaceMark alloc initWithCoordinate location mapView addAnnotation place
  • 第二次单击时 redux 状态值发生变化

    我是 redux 的新手 我已将其与我的 React 应用程序集成 但我有一个关于小测试的说明 在下一个示例中 我看到用户的值在我的第二次单击时添加了 减速机 const initialState user password export