这是几个类似问题的后续问题,但是找到的解决方案(Erik Rasmussen的
组件)似乎不适用于由parse and format操作的select选项。
当存储在表单状态中时,我希望将选项对象“扁平化”为它们的值(并将它们改回选项对象,以便使用React-Select
呈现),因此我执行了以下操作:
const SelectAdapter = ({ input, ...rest }) => (
<Select {...input} {...rest} searchable />
);
const options = [
{ value: "two-a", label: "Two A" },
{ value: "two-b", label: "Two B" }
];
<Field
name={fieldName}
component={SelectAdapter}
options={options}
parse={(formattedOption) => formattedOption ? formattedOption.value : undefined}
format={(parsedValue) => options.find((option) => option.value === parsedValue)}
/>
并在pickoptions
中更改一行,如下所示:
-const aValue = aField.input.value.value;
+const aValue = aField.input.value;
现在,pickoptions
似乎可以正确地清除子级/从属select字段的值,就react-final-form状态/值而言,但它仍然在select字段中呈现旧值,我想不出原因。如有任何帮助,我们将不胜感激!提前道谢。
演示问题的CodeSandbox:在第一个下拉列表中选择一个选项,然后在第二个下拉列表中选择一个选项。接下来,将第一个下拉菜单更改为其他选项。它应该清除第二个下拉列表(您会注意到它清除了表单中的实际值,在输入下面打印的值中,但在第二个/child下拉列表中保留了以前选择的选项的旧标签文本)。您可能还注意到Reset按钮会在内部清空表单值,但不会清除输入。同样的根本原因,我猜。
(编辑)超级黑客变通?
const SelectAdapter = ({ input, ...rest }) => {
const [hack, setHack] = React.useState(0);
React.useEffect(() => {
if (rest.options) setHack((hack) => hack + 1);
}, [rest.options]);
return <Select key={hack} {...input} {...rest} searchable />;
};
我不确定。如果您在呈现childoption
时console.log()
选项
,它们确实会发生更改。所以react-select
是否忽略了对选项
属性的更改?据我所知RFF似乎不是什么问题。
事件不起作用。
问题内容: 该事件不起作用。 问题答案: 更改事件是在元素而不是元素上触发的。但是,这不是唯一的问题。您定义函数的方式不会导致组件的重新渲染。似乎您可能尚未完全了解React的概念,所以“在React中思考”可能会有所帮助。 您必须将所选值存储为状态,并在值更改时更新状态。更新状态将触发组件的重新呈现。 另请注意,元素没有属性。反应/ JSX简单地复制了著名的HTML语法,它不引入自定义属性(有例
问题内容: 正如我从React文档中获得的那样,使用钩子不需要大量的代码重构,并且可以轻松地将其包含在现有代码中。我想使可重用的下拉列表,从反应组件渲染方法调用。这是我的代码: 并得到错误:只能在函数组件的主体内部调用挂钩。我已经检查了有关此问题的现有信息: react-hot-loader版本是4.8.0 我的react和react-dom是同一版本16.8.4; 我的babel-config包
问题内容: 使用 withRouter() 时如何获取路由上下文,位置,参数等? 您可以使用withRouter获得该信息,还是必须将这些内容显式传递到组件树中? 问题答案: 因此,不再使用。在道具中都可以使用: 因此,假设您想将用户转到新路线,您只需
问题内容: react-bootstrap站点中的示例代码显示以下内容。我需要使用数组来驱动选项,但是在查找将要编译的示例时遇到了麻烦。 问题答案: 您可以从这两个功能开始。第一个将基于传递到页面的道具动态创建您的选择选项。如果将它们映射到状态,则选择将自行重新创建。 然后,您将在render内部拥有此代码块。您将传递一个对onChange道具的函数引用,每次调用onChange时,所选对象将自动
本文向大家介绍React Native中的RefreshContorl下拉刷新使用,包括了React Native中的RefreshContorl下拉刷新使用的使用技巧和注意事项,需要的朋友参考一下 我们知道App中都有下拉加载,在React Native中也有类似的控件 一、属性方法 (1) onRefresh function 在视图开始刷新的时候调用 (2) refreshing bool