第二次单击时 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 状态值发生变化 的相关文章

  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • JavaScript onTouch 不工作

    谁能告诉我为什么这个 onTouch 处理程序没有触发 var myDiv document getElementById existingContent var myButton a href log out a myDiv append
  • 主干视图 DOM 元素已删除

    我一直在阅读有关 Backbone js 僵尸 或内存泄漏 问题的信息 基本上 当您不再需要该元素时 您必须从 DOM 中解除绑定并删除该元素 以确保所有事件也被删除 现在 我有一个包含几个容器的单页应用程序 div div div div
  • React js Stripe 结账不起作用

    我正在尝试在 React js 应用程序中呈现条带结账默认表单
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中

随机推荐

  • 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